端末では、ファイル名の末尾にスペースと数字の組み合わせを含むフォルダ内のすべてのファイル名を変更してみました。ファイル名の末尾にはスペースと数字の組み合わせ(例: "12334")が含まれており、.mp3の前にある数字とスペースの両方を削除する必要があります。
たとえば、
filename 1234567.mp3
my file 123.mp3
your file 98.mp3
名前変更:
filename.mp3
my file.mp3
your file.mp3
答え1
強く打つ
$ touch 'filename 1234567.mp3' 'my file 123.mp3' 'your file 98.mp3' 1234.mp3 zzz.mp3
$ for f in *.mp3; do
g=${f%%[[:space:]]+([[:digit:]]).mp3}
if [[ $f != $g ]]; then
mv -v -- "$f" "$g.mp3"
fi
done
renamed 'filename 1234567.mp3' -> 'filename.mp3'
renamed 'my file 123.mp3' -> 'my file.mp3'
renamed 'your file 98.mp3' -> 'your file.mp3'
$ ls
1234.mp3 filename.mp3 'my file.mp3' 'your file.mp3' zzz.mp3
これはbashを使用します延長する模様ファイル名の末尾の空白と1つ以上の数字、その後に「.mp3」が続くものと一致させます。
答え2
そしてzsh
:
まず、関数を自動ロード済みとしてマークします(頻繁にzmv
使用したい場合は最適です)。~/.zshrc
autoload -Uz zmv
それから:
zmv -n '(**/)(*)( *)(.mp3)' '$1$2$4'
満足すれば削除-n
(テスト実行)します。
最後のスペースの後の部分が一連の10進数の場合にのみファイル名を変更してください。
zmv -n '(**/)(*)( <->)(.mp3)' '$1$2$4'
(またはその範囲の数字を<98-1234567>
変更してください<->
)。
(**/)
すべてのレベルのサブディレクトリと一致します。現在のディレクトリのファイル名のみを変更するには、次の手順を実行します。
zmv -n '(*)( *)(.mp3)' '$1$3'