Linux
如果第一個字元為“0”,則從所有文件中刪除
我有幾個文件夾:
1 2 3 4 5
所以在每個文件夾中我都有像
00123.mp3 00133.mp3 00150.mp3
所以如果它們位於文件名的開頭,我想刪除所有0
我試過這個
for file in *; do echo mv "$file" "${file//[ ()@0]/}"; done
但它刪除了開始和文件名內部的所有0(我只需要開始),這在子目錄中也不起作用
如果您使用 bash,此腳本將執行您的要求:
#!/bin/bash shopt -s extglob while IFS= read -d '' f ; do file=${f##*/} dir="${f%/*}/" echo \ mv "$dir$file" "$dir${file##+(0)}" done < <(find . -type f -name '0*.mp3' -print0)
一旦您同意要移動的文件列表,請評論該
echo \
行以實際執行命令。mv
或者這個 sh 版本的可移植性:
#!/bin/sh find . -type f -name '0*.mp3' -print | while IFS= read f; do file=${f##*/} dir="${f%/*}/" f2=$file; until [ "$f2" = "${f2#0}" ]; do f2=${f2#0}; done echo \ mv "$f" "$dir${f2}" done