Как скопировать определенные файлы в списке из подпапок в папку?

У меня есть несколько файлов (все с одинаковым расширением) в разных подпапках, и я хочу скопировать только их подмножество. Например, рассмотрим:

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 файл) файлов, которые я хочу скопировать?

3
задан 6 June 2019 в 00:22

2 ответа

Если список содержит полные пути, вы можете перемещать их в цикле:

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
ответ дан 6 June 2019 в 00:22

Так что я настроил центральную команду, чтобы пройти через подпапки

while read file ; do
   mv dir1/*/"$file" dir2/
done < list.txt

Спасибо

0
ответ дан 6 June 2019 в 00:22

Другие вопросы по тегам:

Похожие вопросы: