У меня есть несколько файлов (все с одинаковым расширением) в разных подпапках, и я хочу скопировать только их подмножество. Например, рассмотрим:
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 файл) файлов, которые я хочу скопировать?
Если список содержит полные пути, вы можете перемещать их в цикле:
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
Так что я настроил центральную команду, чтобы пройти через подпапки
while read file ; do
mv dir1/*/"$file" dir2/
done < list.txt
Спасибо