2012-04-19 7 views
-1

をコピー中のファイルの名前を変更し、「myfolderなどは」日付当社のUNIXサーバで

archive.2012-04-10 
archive.2012-04-11 

が付加多くのアーカイブフォルダが含まれている各アーカイブフォルダは、私がいることを知っている

my_transaction.log-20120410.gz 

以下のような圧縮ファイルが含まれています1つのコマンドの下にmy_transaction.log-20120410.gz、my_transaction.log-20120411.gz、my_transaction.log-20120412.gzをコピーし、 'serverip'サーバーの/ tmpフォルダにコピーします。

scp /myfolder/archive.2012-04-1[0-2]/my_transaction* [email protected]:/tmp 

私の質問は、私は上記に伴い、同様my_transaction.log-20120409.gzをコピーしたい場合は1行のコマンドであるもの)二つの部分

1を持っていますか?コピー/ tmpフォルダの下にコピーされたファイルの名前を変更するためのコマンドであるもの

2)。つまり、以下のように/ tmpの下にコピーする必要があります。 'serverip'/tmpフォルダにコピーしている間に_1をトランザクションに追加したいと思います。最初のポイントのために

my_transaction_1.log-20120409.gz 
my_transaction_1.log-20120410.gz 
my_transaction_1.log-20120411.gz 
my_transaction_1.log-20120412.gz 
+0

スタックオーバーフローは、プログラミングおよび開発に関する質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[スーパーユーザ](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。 [Dev Opsについての質問はどこに投稿しますか?](http://meta.stackexchange.com/q/134306) – jww

答えて

2

extended globbingを試してみてください(未テスト)第二の点については

# This could go in your ~/.bashrc 
shopt -s extglob 
scp /myfolder/[email protected](09|1[0-2])/my_transaction* [email protected]:/tmp 

、私はあなたが一度にあるすべてのファイルをSCPとの両方の名前を変更することができるとは思いません。あなたはループでそれらをすべて行うことができます。例えば。私は同じ問題の一つの解決策を見つけた

for file in /myfolder/[email protected](09|1[0-2])/my_transaction*; do 
    newfile=$(echo $file | sed -e "s/my_transaction/my_transaction_1/") 
    # Take out the "echo" if the command looks OK 
    echo scp $newfile [email protected]:/tmp 
done 
+0

名前を変更してコピーするにはsftpを使用できますか?私は特にscpを探しているわけではありません。 – Suresh

+0

私はそれが何か変わるとは思わない。 –

0

(もテストされていない)、参照してください。

scp -v localhost:/home/myuser/test/arquivo* . 2>&1| grep -i modes|awk '{print $6}' 

これはあなたがそれぞれの名前を持っているので、あなたが使用することができ、SCPによって転送されたファイル名を取得します多かれ少なかれこのファイル名の後に名前を変更するためのawk:

scp -v localhost:/home/myuser/test/arquivo* . 2>&1| grep -i modes|awk '{print "mv "$6" "$6".renamed"}'|sh -x 

これはあなたにも役立つことを願っています。 私にとっては非常にうまくいっています。

関連する問題