C Shell Scripting - 附加到文件名的末尾

时间:2011-02-10 03:52:30

标签: scripting csh

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

我不确定我可以用什么命令将某些东西附加到文件的末尾,它比我想的更简单,还是需要命令?

2 个答案:

答案 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>