命令行 - 如何将列表中的特定文件从子文件夹复制到文件夹?

・1 分钟阅读

问题

我在不同的子文件夹中有多个文件(都有同样的扩展名),只复制其中的一个子集,例如:


A/: 1.txt, 2.txt, 3.txt


B/: 4.txt, 5.txt, 6.txt


C/: 7.txt, 8.txt, 9.txt



我想将文件1.txt2.txt5.txt8.txt复制到新文件夹。

我有500多个子文件夹,每个子文件夹包含几千个文件,有一个要复制的TXT文件列表,有没有一种方法可以自动执行这个操作?


回答1:

如果列表包含完整路径,则可以将它们移动到循环中:


while read file ; do


 mv"$file" dir/


done < list.txt



如果列表只包含文件名,没有路径则可以使用globstar。


# enable double asterisk to recurse directories


shopt -s globstar



while read file ; do


 mv **/"$file" dir/


done < list.txt




回答2:

所以,我调整了命令,以便浏览子文件夹,


while read file ; do


 mv dir1/*/"$file" dir2/


done < list.txt



谢谢


讨论
Tianye profile image