web-dev-qa-db-ja.com

「_backup」で終わる名前のフォルダー内のすべてのファイルの名前を変更する方法

いくつかの画像がmyimage.jpgからmyimage.jpg_backupに名前が変更されたため、私のウェブサイト上の画像はもう読み込まれません。 _backupで終わるすべての画像を再帰的に見つけて、残りのファイル名を保持しながら_backup部分だけを削除するにはどうすればよいですか?

私は次のようなものを試しました:

Sudo find . -name "*.jpg_backup" -exec rename -n 's/_backup$//' *.jpg_backup ';'

しかし、それは私にエラーを与えます:

Can't rename *.jpg_backup *.jpg: No such file or directory
4
bigpotato

rename -v 's/\.jpg_backup$/\.jpg/' *.jpg_backupを試してください-vは詳細な出力を提供します。こちらをご覧ください 名前の変更方法

6
TiloBunt

端末 で、それらのファイルがあるディレクトリに移動します(cd /path/to/folderを使用)。ファイルに空白または特殊文字\[*?が含まれていない場合は、次のコマンドを実行します。

for file in `find . -name *.jpg_backup` ; do mv "$file" "${file%_backup}"; done

空白またはグロビング文字を含むファイル名があると思われる場合は、次を使用します。

find . -type f -name '*.jpg_backup' -print0 \
| while IFS= read -r -d '' file ; do mv -- "$file" "${file%_backup}"; done

または:

shopt -s globstar; 
for file in /path/to/folder/**/*.jpg_backup ; do mv -- "$file" "${file%_backup}"; done

上記のコマンドは、現在のフォルダーとサブフォルダーからすべての*.jpg_backupファイルを再帰的に検索し、*.jpgに名前を変更します。最後の1つは、ディレクトリへのシンボリックリンクの内部も調べます。

3
Radu Rădeanu