サブディレクトリには多くのファイルがあり、すべて親ディレクトリに移動したいと思います。
前任者:
20150530XXXX/1.jpg
20150530XXXX/2.jpg
20150530XXXX/3.jpg
20150530XXXX/4.jpg
20150531XXXX/1.jpg
20150531XXXX/2.jpg
20150531XXXX/3.jpg
20150531XXXX/4.jpg
stackexchangeの他の質問で次のコマンドが見つかりました。
find ./ -mindepth 2 -type f -exec mv -t A {} +
ただし、これは各イメージファイルの名前が同じであるため、イメージファイルを上書きしているようです1-4.jpg
。サブディレクトリ名をファイル名20150531XXXX/4.jpg
に関連付ける方法はありますか./20150531XXXX_4.jpg
?
答え1
perl
次のバージョンがある場合rename
(prename
一部のディストリビューションで指定):
find . -type f -mindepth 2 -name '*.jpg' -exec rename -n 's!/([^/]+)$!_$1!' {} +
これは、コマンドが実行する操作のみを示しています。これに満足している場合は、-n
実際にファイル名を変更するオプションを削除してください(実際の名前を変更しても何も印刷されません)。