所以我收集了很多文件,我希望将它们复制到一个目录中并使用添加的文件扩展名存储它们,比如“.copy”。
我不确定我可以用什么命令将某些东西附加到文件的末尾,它比我想的更简单,还是需要命令?
答案 0 :(得分:2)
您打算使用循环执行此操作还是尝试查找单行程序?如果您有文件$f
,则可以为附加版本说$f.copy
。
答案 1 :(得分:2)
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>