匹配两个文件夹中的文件名(不带扩展名)并将它们写入新文件夹中

匹配两个文件夹中的文件名(不带扩展名)并将它们写入新文件夹中

我有两个文件夹 dir1、dir2。dir1 包含所有 *.png 文件,而 dir2 包含所有 *.mrc 文件。dir1 的文件数量比 dir2 少。

我确信 dir1 中的每个 png 文件在 dir2 中都有一个同名的 mrc 文件。如何创建一个仅包含与 png 文件同名的 mrc 文件的文件夹?

答案1

这有点低效,但如果你确定每个 png 文件都有相应的 mrc 文件,那么你真正需要做的就是循环遍历 png 文件并替换目录组件和扩展名,例如

for f in dir1/*.png; do echo cp "dir2/$(basename "$f" .png).mrc" newdir/; done

例如给定

$ tree dir1 dir2
dir1
├── a.png
├── b.png
└── d.png
dir2
├── a.mrc
├── b.mrc
├── c.mrc
├── d.mrc
├── e.mrc
└── f.mrc

0 directories, 9 files

然后

$ for f in dir1/*.png; do echo cp "dir2/$(basename "$f" .png).mrc" newdir/; done
cp dir2/a.mrc newdir/
cp dir2/b.mrc newdir/
cp dir2/d.mrc newdir/

去除 echo 一旦你满意了它就会做你想做的事

相关内容