Linux検索機能で見つけたファイルをコピーして名前を変更するには?

Linux検索機能で見つけたファイルをコピーして名前を変更するには?

487個のフォルダがあるというフォルダがあります/home/user/temps。各フォルダにはThumb.pngというファイルがあります。

Thumb.pngという名前のすべてのファイルを別のフォルダにコピーし、元のフォルダに応じて名前を変更したいと思います。

ベストアンサー1

ここにあります:

for file in /home/user/temps/*/thumb.png; do new_file=${file/temps/new_folder}; cp "$file" "${new_file/\/thumb/}"; done;

編集する:

ところで、一般的な通念はこうするのがfind悪い考えだということです。単にシェル拡張を使用する方がより安定しています。また、これは仮説ですbashが、安全な仮定だと思います:)

編集2:

明確にするために分析します。

# shell-expansion to loop specified files
for file in /home/user/temps/*/thumb.png; do

    # replace 'temps' with 'new_folder' in the path
    # '/home/temps/abc/thumb.png' becomes '/home/new_folder/abc/thumb.png'
    new_file=${file/temps/new_folder};

    # drop '/thumb' from the path
    # '/home/new_folder/abc/thumb.png' becomes '/home/new_folder/abc.png'
    cp "$file" "${new_file/\/thumb/}";
done;

${var/Pattern/Replacement}詳細な工事情報をご確認いただけます。ここ

この行の引用符は、cpファイル名のスペース、改行などを処理するために重要です。

おすすめ記事