削除後の名前変更:同じファイル名別の拡張子

削除後の名前変更:同じファイル名別の拡張子

何千ものファイルを含むディレクトリがあり、各ファイルのコピーがあります。一例:

file1.txt
file1.jpg.txt

file2.txt
file2.jpg.txt

すべての*.txtファイルを削除し、*.jpg.txtを保持してから、すべての*.jpg.txtの名前を*.txtに変更したいと思います。

OpenSuse 12で実行しています。

ベストアンサー1

@roaimaが述べたように、最初にファイルを削除する必要はなく、ファイルを移動すると古いファイルが自動的に上書きされます。

1つの方法は、bashでforループを使用することです。

for f in *.jpg.txt; do mv $f ${f/%.jpg.txt/.txt}; done

説明します。

  • for f in *.jpg.txt; do <command>; done:各ファイルに対してコマンドを実行します*.jpg.txt。ファイル名は実行中に変数に保存されますf
  • ${f/%.jpg.txt/.txt}:の値です$fが、最後の項目.jpg.txtはに置き換えられます.txt。バラよりhttps://www.tldp.org/LDP/abs/html/parameter-substitution.htmlこれについて詳しく学んでください。
  • mv $f ${f/%.jpg.txt/.txt}:古いファイルの名前を.jpg

このコードを実行する前に、次を実行してコードが正しく実行されていることを確認できます。

for f in *.jpg.txt; do echo $f ${f/%.jpg.txt/.txt}; done

これにより、移動するファイルのペアが印刷されます。

おすすめ記事