Folder.jpgというファイルを1つのフォルダにコピーしようとしています。問題は、すべてのファイルの名前が同じであるため、プロセス中に名前を変更する必要があることです。 sedを使用してこれを行うことができることを知っていますが、名前を親フォルダの一部である名前に変更したいと思います。ファイルを見つけてコピーして得た結果です。
cp $(find . -iname "folder.jpg") .albumart/
フォルダ構造は./artist/artist.year.album/folder.jpgで、親フォルダ(またはその一部)を使用してファイル名を指定したいと思います。ライナーの作業を完了するのに役立つ人はいますか?問題をより複雑にするために、一部のフォルダに存在する場合は無視したいCD1およびCD2レイヤーもあります(例:./artist/artist.year.album/CD1/folder.jpg)。
ベストアンサー1
bash
このバージョンはフォルダ構造(例:)を使用し、./foo/bar/baz/folder.jpg
すべてのスラッシュを下線で置き換えます(例:次のようにfoo_bar_baz_folder.jpg
)。
find . -iname folder.jpg -exec bash -c 'for x; do x=${x#./}; cp -i "$x" ".albumart/${x//\//_}"; done' _ {} +
何をしても、複数の場所から同じターゲットにファイルを移動するたびに名前がクラッシュする可能性が常にあることに注意してください。