我有一个文件夹 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