Linux - 如何将多个子目录中相同扩展名的文件复制到一个目录?

4 投票
3 回答
670 浏览
提问于 2025-04-17 19:06

我有一个文件夹,里面有很多子文件夹,每个子文件夹里都有一个*.nr文件。总共有1000个子文件夹,每个子文件夹至少有一个*.nr文件。有没有什么简单的方法可以把这些*.nr文件都复制到一个文件夹里呢?

我可以写一个简单的python脚本来遍历这些文件,但如果有更简单的命令行方法,这样做就显得有点多余了。

我在网上查找,但不太确定该用什么确切的词去搜索。

谢谢!

3 个回答

0

在bash中最简单的方法是:

for F in */*.nr; do cp $F otherdir/ ; done
4

如果你在使用GNU的cp命令,这样做会更快:

find /path/to/src -name "*.nr" -print0 | xargs -0 cp -t /path/to/dest


把我src目录下的所有.c文件复制过来:

time find ~/src -name "*.c" -exec cp \{\} ~/src/Cfound/ \;
. . .
real    0m1.838s
user    0m9.530s
sys     0m1.110s

time find . -name "*.c" -print0 | xargs -0 cp -t ./Cfound/
. . .
real    0m0.057s
user    0m0.010s
sys     0m0.060s
9

类似这样的东西

find /path/to/src -name "*.nr" -exec cp \{\} /path/to/dest \;

撰写回答