名前は同じですが、拡張子が別のファイルにファイルを移動する方法

名前は同じですが、拡張子が別のファイルにファイルを移動する方法

小さなファイルがたくさんあるフォルダAがあります。親フォルダ内には、他のファイルを含む多くのフォルダがあります。これで、フォルダAには他のフォルダと同じ名前のファイルがいくつかありますが、最後にも.xmpがあります。

現在の構造は次のとおりです。

  • ~/A/foo.xmp
  • ~/A/bar.xmp
  • ~/フォルダ1/foo
  • ~/フォルダ2/列

これが私が望むものです:

  • ~/フォルダ1/foo
  • ~/folder1/foo.xmp
  • ~/フォルダ2/列
  • ~/folder2/bar.xmp

親ディレクトリ(そのファイルはfoo)でfoo.xmpに対応するファイルを見つけて、そのファイルをそこに移動するにはどうすればよいですか。

現在のディレクトリ内のすべてのファイルを通過するようにこれをループに入れますか?

ベストアンサー1

for dir in folder*/
do
    for f in "$dir"*
    do
        base=${f#$dir}
        [ -f "A/$base.xmp" ] && mv "A/$base.xmp" "$dir"
    done
done

おすすめ記事