fteadmin@linux-wmq-ams:~/files> ls -1
file1.txt
file2.txt
file3.txt
fteadmin@linux-wmq-ams:~/files> ls -1 | xargs -I{} cp {} {}.copy
fteadmin@linux-wmq-ams:~/files> ls -1
file1.txt
file1.txt.copy
file2.txt
file2.txt.copy
file3.txt
file3.txt.copy
В зависимости от вашей платформы вам может потребоваться немного изменить синтаксис для xargs. Я видел, что он использует -i{}
и -I{}
, но прописные буквы выглядят более распространенными. Конечно, вы можете указать полный путь до имени файла {}.copy
, чтобы файлы оказались в другом каталоге.
Если вам нужно сделать чуть больше, чем однострочник, есть также следующее:
ls -1 | {
while read _file; do
echo Copying $_file to $_file.copy
cp $_file $_file.copy
done
}
Вы можете поместить любое количество строк в цикл while. Например, вы можете скопировать один и тот же файл в дюжину разных целевых каталогов или суффиксов. Если вы просто вставляете его, вам не нужно делать из него скрипт. Результат выглядит так:
fteadmin@linux-wmq-ams:~/files> ls -1
file1.txt
file2.txt
file3.txt
fteadmin@linux-wmq-ams:~/files> ls -1 | {
> while read _file; do
> echo Copying $_file to $_file.copy
> cp $_file $_file.copy
> done
> }
Copying file1.txt to file1.txt.copy
Copying file2.txt to file2.txt.copy
Copying file3.txt to file3.txt.copy
fteadmin@linux-wmq-ams:~/files> ls -1
file1.txt
file1.txt.copy
file2.txt
file2.txt.copy
file3.txt
file3.txt.copy
fteadmin@linux-wmq-ams:~/files>