シェルスクリプト:ファイルパスの一部をファイル名として使用するには?

シェルスクリプト:ファイルパスの一部をファイル名として使用するには?

次のように、正確に1つのJPEGイメージを含むディレクトリセットがあります。

/psds/folder1/image.jpg
/psds/someotherfolder/picture.jpg
/psds/yetanotherfolder/thumbnail.jpg

jpegの名前をインクルードフォルダの名前に置き換える正しい方法は何ですか?私が望むもの:

/psds/folder1/folder1.jpg
/psds/someotherfolder/someotherfolder.jpg
/psds/yetanotherfolder/yetanotherfolder.jpg

ベストアンサー1

ディレクトリから次のコマンドを実行します/psds

for f in ./*; do
    if [ -d "$f" ] ; then
        cd "$f"
        mv *.jpg "$f.jpg"
        cd ..
    fi
done

/psds以下のようにディレクトリに3つのフォルダがある場合

/psds/folder1/image1.jpg
/psds/folder2/image2.jpg
/psds/folder3/image3.jpg

上記のコマンドを実行すると、ファイル名は次のように変更されます。

/psds/folder1/folder1.jpg
/psds/folder2/folder2.jpg
/psds/folder3/folder3.jpg

おすすめ記事