
複数の写真を含むフォルダがあります。ファイル名をすべて小文字に変換してから、特定の文字列をすべて削除したいと思います。
たとえば、将来的には、、、、およびBILD02_CMYK_freigestellt_RENDER_3D.jpg
関連する単語を削除する必要があります。これまで、次の組み合わせがありますが、これが最初の段落になり、すべての項目ではなく最初の項目のみが削除されます。cmyk
render
3d
_
// Rename names to lowercase
for file in *;
do
mv "$file" "$file.tmp";
mv "$file.tmp" "`echo $file | tr "[:upper:]" "[:lower:]"`";
done
// Remove cmyk from filename
// optimierung: macht es nur einmal bei einer datei - ----
for file in *; do mv "${file}" "${file/cmyk/}"; done
for file in *; do mv "${file}" "${file/freigestellt/}"; done
for file in *; do mv "${file}" "${file/-/_}"; done
答え1
rename -n '$_=lc; s/(cmyk|freigestellt|render|3d|_|-)//g' *.jpg
これは以下を使用します。真珠prename
名前変更コマンド(とも呼ばれるfile-rename
)これはいいえrename
コマンドラインオプションと機能はまったく異なるutil-linuxのコマンドと混同されます。
まず、Perlの機能を使用してファイル名を小文字に変換し、テキストまたはlc()
サンプルコードで言及されているすべての単語と文字を削除します。
この-n
オプションを使用すると、rename
練習の実行が発生します。許可した場合は、実行するアクションのみが表示されます。実際にファイル名を変更するには、そのファイルを削除するか、詳細な出力に-n
変更してください。-v
例えば
$ touch BILD{00..05}_CMYK_freigestellt_RENDER_3D.jpg
$ rename -v '$_=lc; s/(cmyk|freigestellt|render|3d|_|-)//g' *.jpg
BILD00_CMYK_freigestellt_RENDER_3D.jpg renamed as bild00.jpg
BILD01_CMYK_freigestellt_RENDER_3D.jpg renamed as bild01.jpg
BILD02_CMYK_freigestellt_RENDER_3D.jpg renamed as bild02.jpg
BILD03_CMYK_freigestellt_RENDER_3D.jpg renamed as bild03.jpg
BILD04_CMYK_freigestellt_RENDER_3D.jpg renamed as bild04.jpg
BILD05_CMYK_freigestellt_RENDER_3D.jpg renamed as bild05.jpg