C Shell Scripting - добавление в конец имени файла - PullRequest
1 голос
/ 10 февраля 2011

Итак, я беру несколько файлов и хочу скопировать их в каталог и сохранить их с добавленным расширением файла, например, «.copy».какую команду я могу использовать для добавления чего-либо в конец файла, это проще, чем я думаю, или мне нужна команда?

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011
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> 
2 голосов
/ 10 февраля 2011

Планируете ли вы сделать это, используя цикл, или вы пытаетесь найти однострочник?Если у вас есть файл $f, вы можете просто сказать $f.copy для добавленной версии.

...