所以我接收了一些文件,我希望将它们复制到一个目录并使用添加的文件扩展名存储它们,比如“.copy”。
我不确定我可以使用什么命令将某些内容附加到文件的末尾,它比我想象的要简单还是我需要一个命令?
您打算使用循环来执行此操作,还是尝试找到单线?如果你有一个文件$f
,你可以只说$f.copy
附加版本。
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>