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

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

我在不同的子文件夹中有多个文件(所有文件都具有相同的扩展名),并且只想复制其中的一部分。例如,考虑:

A/: 1.txt, 2.txt, 3.txt
B/: 4.txt, 5.txt, 6.txt
C/: 7.txt, 8.txt, 9.txt

我想要将文件、、和复制到1.txt新文件夹。2.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

谢谢

相关内容