ディレクトリを次の形式にどのようにフラット化できますか?
今後:./aaa/bbb/ccc.png
後ろに:./aaa-bbb-ccc.png
ベストアンサー1
これにはすでに良い答えがありますが、次はより直感的だと思いますbash
。
find aaa -type f -exec sh -c 'new=$(echo "{}" | tr "/" "-" | tr " " "_"); mv "{}" "$new"' \;
aaa
既存のディレクトリはどこにありますか?ここに含まれるファイルは現在のディレクトリに移動されます(aaaには空のディレクトリのみが残ります)。これら2つの呼び出しはtr
ディレクトリとスペースを処理します(スラッシュをエスケープする論理なし - 読者のための練習)。
私はこれがより直感的で比較的調整しやすいと思います。find
つまり、.pngファイルのみを見つけるためにパラメータを変更できます。tr
通話を変更するか、必要に応じて追加できます。正しく機能しているかどうかを視覚的に確認するには、echo
まず追加し、追加の手順なしに問題が正しく表示される場合にのみ繰り返します。mv
echo
find aaa -name \*.png -exec sh -c 'new=$(echo "{}" | tr "/" "-" | tr " " "_"); echo mv "{}" "$new"' \;
また、...または...の代わりにfind aaa
...を使用したことに注意してください。後者の2つは最終ファイル名に興味深い痕跡を残すからです。find .
find aaa/