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