約360,000個のファイルがあります。たとえば、次のようになります。
./001/1/1.jpg
./001/1/2.jpg
./001/2/1.jpg
./002/1/1.jpg
./003/1/1.jpg
...
pattern: [60 dirs]/[1000 subdirs]/[4-10 files].jpg
rename
たとえば、ファイル名を* .jpgから* .jpegに変更したいとします。rename
引数リストが長すぎるというエラーが発生するため、Singleを使用してこれを実行することはできません。
解決策を探している間にこれを見つけましたが、名前は変わりませんでした。
find -maxdepth 2 -mindepth 2 -type d -exec rename -n 's/jpg/jpeg/' {}/* \;
拡張されたことを確認するときは、{}
名前の変更をechoに変更してください。
find -maxdepth 2 -mindepth 2 -type d -exec echo "rename -n 's/jpg/jpeg/' {}/*" \;
期待される結果を得る。
rename -n 's/jpg/jpeg/' ./061/61430/*
rename -n 's/jpg/jpeg/' ./061/61431/*
...
これらの名前変更コマンドを実行すると、ジョブ名が変更されます。だからそれが質問になるはずです{}
。
助けてくれてありがとう!
ベストアンサー1
最初の場合、コマンドは、および3つの引数を使用して実行され*
ます。最後の引数は既存のファイルの名前ではないので、何もしません。rename
{}/*
rename
-n
s/jpg/jpeg/
some/path/*
rename
シェルワイルドカードがない場合、パスはrename
。
したがって、次のようにします。
find -maxdepth 3 -mindepth 3 -type f -iname '*.jpg' -exec rename -n 's/jpg$/jpeg/i' {} +
find
+
可能であれば、代わりにコマンドラインを作成する機能を使用してください;
。