Я хотел бы скопировать группу файлов в папку назначения. Но без необходимости создавать новый экземпляр cp
для каждой операции.
Формат аргумента cp
выглядит следующим образом:
cp src_file1 src_file2 src_file3 dest_dir/
Предположим, у меня есть файл с именами исходных файлов, перечисленными построчно. Как это можно сделать?
Поскольку у меня очень большое количество файлов, идея от @Scott ниже не сработает, так как она достигнет максимальной длины командной строки.
Я хотел бы как-то передать этот файл с именами файлов cp
и позволить ему делать свое дело. xargs
Но это тоже не может помочь, так как он хочет прикрепить расширение в конце командной строки.
Можно ли это сделать?
Спасибо
решение1
Если filelist
содержит
apple
orange
banana
где это имена файлов, которые вы хотите скопировать в fruity
каталог, введите
cp `cat filelist` fruity
Вам не нужно /
в конце.
Предупреждение: это не сработает, если какое-либо имя файла содержит пробелы, например, passion fruit
.
решение2
Имитация print0
находки:
cat filelist |perl -p -e 's/\n/\000/' |xargs -0 cp --target-directory dest_dir/
этот образец включает в себя xargs -0
,--target-directory