Я не уверен, что вы имеете в виду, это поведение по умолчанию команды копирования (cp
):
Вот несколько примеров более сложных операций:
Скопируйте все файлы, прочитанные из списка (при условии, что имена файлов нормальные, без пробелов или странных символов):
while read n; do cp $n destination_dir < file_list.txt
Как и выше, но работает для имен файлов с пробелами или странными символами:
while IFS= read -r n; do cp "$n" destination_dir < file_list.txt
Найдите все файлы, соответствующие шаблону, и скопируйте их:
find . -name "*data*" -exec cp {} destination_dir \;
Как и выше, но работает со странными именами файлов:
find . -print0 -name "*data*" | xargs -0 cp -t destination_dir \;
Я до сих пор не понимаю, почему вы хотели бы сделать это, но хорошо. Чтобы добавить операцию копирования, которая будет выполнена после окончания текущей, вы можете сделать это:
Создайте список файлов, которые вы хотите скопировать. Поскольку вы начинаете с одного файла, список будет содержать только одно имя файла:
echo "fileA" > list.txt
Начните копирование файла, прочитав список (как и раньше, предполагается, что имена файлов нормальны , используйте пример 2 из списка выше, если имя вашего файла может содержать пробелы или странные, не буквенно-цифровые символы):
while read n; do cp -v $n destination_dir < file_list.txt
Найдите следующий файл, который вы хотите скопировать, и добавьте его в список:
echo "fileB" >> list.txt
Если вы выполните шаг 3 до завершения копирования, следующий файл будет скопирован, как только будет сделан первый.
Я просто не понимаю, почему вы просто не запускаете много независимых команд cp
. Насколько я могу судить, вы все усложняете без причины.