命令行 - 如何将列表中的特定文件从子文件夹复制到文件夹?
Tianye
・1 分钟阅读
问题
我在不同的子文件夹中有多个文件(都有同样的扩展名),只复制其中的一个子集,例如:
A/: 1.txt, 2.txt, 3.txt
B/: 4.txt, 5.txt, 6.txt
C/: 7.txt, 8.txt, 9.txt
我想将文件1.txt
,2.txt
,5.txt
和8.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
谢谢