2011-02-10 18 views
1

私はいくつかのファイルを取り込んでいます。それらをディレクトリにコピーして、ファイル拡張子「.copy」を付けて保存したいと思います。Cシェルスクリプト - ファイル名の末尾に追加

私は、ファイルの最後に何かを追加するためにどのコマンドを使用できるかわかりませんが、思っているより簡単ですか、コマンドが必要ですか?

答えて

2

ループを使用してこれを行う予定ですか、1ライナーを見つけようとしていますか?ファイルが$fの場合、追加されたバージョンについては$f.copyと言うことができます。

+0

ループを計画すると、実際にファイルをコピーするにはどのように使用しますか? – muttley91

+0

'cp $ fディレクトリ/ $ f.copy'。しかし、 'xargs'を使って1行バージョンのT.Robの答えを見てください。 –

2
[email protected]:~/files> ls -1 
file1.txt 
file2.txt 
file3.txt 
[email protected]:~/files> ls -1 | xargs -I{} cp {} {}.copy 
[email protected]:~/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ループに任意の数の行を置くことができます。たとえば、同じファイルを12個の異なる宛先ディレクトリまたはサフィックスにコピーすることができます。それを貼り付けるだけであれば、スクリプトを作成する必要はありません。結果は次のようになります。

[email protected]:~/files> ls -1 
file1.txt 
file2.txt 
file3.txt 
[email protected]:~/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 
[email protected]:~/files> ls -1 
file1.txt 
file1.txt.copy 
file2.txt 
file2.txt.copy 
file3.txt 
file3.txt.copy 
[email protected]:~/files> 
関連する問題