子ディレクトリ内のすべてのファイルを親ディレクトリに一括移動しますが、ファイル名は同じです。

子ディレクトリ内のすべてのファイルを親ディレクトリに一括移動しますが、ファイル名は同じです。

サブディレクトリには多くのファイルがあり、すべて親ディレクトリに移動したいと思います。

前任者:

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次のバージョンがある場合renameprename一部のディストリビューションで指定):

find . -type f -mindepth 2 -name '*.jpg' -exec rename -n 's!/([^/]+)$!_$1!' {} +

これは、コマンドが実行する操作のみを示しています。これに満足している場合は、-n実際にファイル名を変更するオプションを削除してください(実際の名前を変更しても何も印刷されません)。

おすすめ記事