1

所以我接收了一些文件,我希望将它们复制到一个目录并使用添加的文件扩展名存储它们,比如“.copy”。

我不确定我可以使用什么命令将某些内容附加到文件的末尾,它比我想象的要简单还是我需要一个命令?

4

2 回答 2

2

您打算使用循环来执行此操作,还是尝试找到单线?如果你有一个文件$f,你可以只说$f.copy附加版本。

于 2011-02-10T03:54:42.133 回答
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> 
于 2011-02-10T04:04:13.687 回答