2 つのレベルのサブフォルダーがあるフォルダーがあります。 2番目のサブフォルダにはjpgファイルがあります。すべてのjpgの名前は同じです。cover.jpg
例:
/home/user/folder001/folderAAA/cover.jpg
/home/user/folder002/folderBBB/cover.jpg
[...]
/home/user/folder999/folderZZZ/cover.jpg
すべてのファイルを見つけて新しいフォルダにコピーし、cover.jpg
名前を変更して、最初と2番目のサブフォルダの名前をファイル名にプレフィックスとして追加する必要があります。
例:
予想操作後の ot の内容は、次/home/user1/newfolder
のようになります。
folder001_folderAAA_cover.jpg
folder002_folderBBB_cover.jpg
[...]
folder999_folderZZZ_cover.jpg
ベストアンサー1
これはsedコマンドを使用して簡単に達成できます。名前を変更する必要があるファイルのリストを探し、sed / echoファイルパスを使用して要件を満たします。
cd /home/user
for fl_nm in $(find . -type f -name "cover.jpg")
do
echo copying the file with desired name to new folder : $fl_nm
cp $fl_nm /home/user1/newfolder/$(echo ${i#*/*} | sed 's/\//_/g')
#Above copy command ignores the find result which extracts only file path from ./**file_path**
done
Cover.jpgという名前のすべてのファイルは、ファイル名にそのフォルダの詳細を含む/home/user1/newfolderにコピーされます。