如何将文件移动到同名但扩展名不同的文件

如何将文件移动到同名但扩展名不同的文件

我有一个文件夹 A,里面有很多小文件。在父文件夹中有许多文件夹,其中包含其他文件。现在,在文件夹 A 中,有一些与其他文件夹同名的文件,但它们末尾还有 .xmp。

这就是现在的结构:

  • 〜/ A / foo.xmp
  • 〜/A/bar.xmp
  • 〜/文件夹1/foo
  • 〜/文件夹2/栏

这就是我想要的:

  • 〜/文件夹1/foo
  • 〜/folder1/foo.xmp
  • 〜/文件夹2/栏
  • 〜/folder2/bar.xmp

如何在父目录中找到 foo.xmp 的对应文件(对应的文件是:foo)并将我的文件移动到那里?

如何将其放入循环中以便它遍历当前目录中的所有文件?

答案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

答案2

可以这样做:

#Assuming there are N folders folder1,folder2...folderN
for folder in folder* 
do
cd $folder
for file in *
do
#if file with .xmp extension exists in ~/A folder
[[ -f $file ]] && [[ -f ~/A/$file.xmp ]] && mv ~/A/$file.xmp .
done
cd ..
done

相关内容