私は次の内容を読んだ。バッチ名の変更、プレフィックスの変更私のファイルを試してみましょう。
Old
この場合は削除して次に交換したいと思います。New
テストファイル
01. Old Name.txt
02. Old Name.txt
03. Old Name.txt
1回試してください
for f in *.txt
do
mv "$f" "New${f#Old}"
done
出力1
New01. Old Name.txt
New02. Old Name.txt
New03. Old Name.txt
2回試してください
for i in *.txt
do
mv ${i} ${i/#Old/New}
done
出力2(変更なし)
user@linux:~$ for i in *.txt
> do
> mv ${i} ${i/#Old/New}
> done
mv: target 'Name.txt' is not a directory
mv: target 'Name.txt' is not a directory
mv: target 'Name.txt' is not a directory
user@linux:~$
私のソリューションにはどのような問題がありますか?
希望の出力
01. New Name.txt
02. New Name.txt
03. New Name.txt
答え1
変数を参照してください。また、前に
${i/Old/New}
ポンド記号(#
)を使用しないでくださいOld
。#
ファイル名の先頭で一致が始まるように強制しますが、で始まるファイルはなく、Old
すべてで始まります0
。$ touch "01. Old Name.txt" "02. Old Name.txt" "03. Old Name.txt" $ for i in *.txt ; do mv -v "$i" "${i/Old/New}" ; done renamed '01. Old Name.txt' -> '01. New Name.txt' renamed '02. Old Name.txt' -> '02. New Name.txt' renamed '03. Old Name.txt' -> '03. New Name.txt'
Perl
rename
ユーティリティをインストールして使用します(例:sudo apt-get install rename
Debianとその派生製品)。これはDIYバッチ名の変更よりはるかに優れています。