名前に削除する共有パターンを持つファイルが多数あります。たとえば、私はファイル "a_file000.tga"と "another_file000.tga"を持っています。私は新しい名前、 "a_file.tga"と "another_file.tga"という結果に名前からパターン "000"を削除するファイルを操作したいと思います。BASHを使用して特定の文字をファイル名から削除する方法
for file in *; do mv "${file}" "${file/000/}"; done
名前に削除する共有パターンを持つファイルが多数あります。たとえば、私はファイル "a_file000.tga"と "another_file000.tga"を持っています。私は新しい名前、 "a_file.tga"と "another_file.tga"という結果に名前からパターン "000"を削除するファイルを操作したいと思います。BASHを使用して特定の文字をファイル名から削除する方法
for file in *; do mv "${file}" "${file/000/}"; done
は(これは同様に、昔ながらのボーンsh
で動作)、これを試してみてください:
for i in *000.tga
do
mv "$i" "`echo $i | sed 's/000//'`"
done
どちらの引数
はにスペースをサポートするために、引用符で囲まれバッシュはsed
様の置換を行うことができますファイル名。
:それはあなたの名前の変更のためのperl正規表現、例えばを使用することができます。簡潔で簡潔なありがとう。 – jamesnotjim
ニース、 "{"の機能を説明できますか? – efrem
@efrem:中括弧は変数名のオプションの区切り文字で、パラメータの展開に必要です。詳細については、[Bash Manual](https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion)を参照してください。 –
非bashのソリューション私は2枚の迅速なポスターを知っているので、すでにことをカバーしている:
は一部のシステムではデフォルトでインストールされているrename
と呼ばれる優秀な短いPerlプログラムがあります(他の人はあまり有用リネームプログラムを持っています) 。
rename 's/000//' *000*.tga
+1ほとんどのポータブルソリューション(と私はupvotes _all_良い答えを維持するために低すぎる実行しているため)。 –