2017-06-02 3 views
0

「rsync」を使用してダウンロードしている「gz」ファイルがあります。次に、これらのファイルが圧縮されているので、私はgunzipを使用してそれらを抽出する必要があります(私はgunzipのための他の選択肢にオープンしています)。 、 awk -F "\t" '$5~/^(reference genome|representative genome)$/ {sub("ftp", "rsync", $20); b=$20"/*genomic.fna.gz"; print b" viral/." }' assembly_summary_viral.txt | xargs -l1 rsync --copy-links --times --recursive --verbose --exclude="*rna*" --exclude="*cds*"rsyncを使用してダウンロードし、gunzipを使って抽出し、すべてパイプに入れてください

それは少し複雑に見えますが、それは私が必要なファイルをダウンロードしています:私は私の元のコマンドには、次のされているrsync file | gunzip

のようなものを持っているパイプに一緒にすべてのこれらのコマンドを入れたいです問題はありません。私は| gunzipを追加しましたが、圧縮ファイルの抽出は機能していません。ダウンロードするだけです。

提案がありますか?

+0

パイプは、stdoutをパイプの後のコマンドの標準入力にリダイレクトします。あなたのrsyncコマンドの標準出力は、 'gunzip'が使用できるものではないと仮定しています。私はまた、 'xargs rsync'がどう動いているのだろうかと思っています。ニフティ。 – JNevill

+0

私はシェルコマンドの専門家ではありません...しかし、私はawkの出力をパイプしようとしていたときにインターネット上でスクリプトxargs rsyncを見つけました。 – dabid

答えて

0

パイプは、左側のコマンドのstdoutを受け取り、それを右側のコマンドのstdinに送信します。ここでは、rsyncのstdoutとgunzipの標準にパイプを取らなければなりません。

rsync実際には-vフラグがないと出力されませんので、追加する必要があります。

>rsync -rv ./ ../viral 
sending incremental file list 
file1 
file2 
file3 
test1_2/ 
test1_2/file1 
test1_2/file2 

sent 393 bytes received 123 bytes 1,032.00 bytes/sec 
total size is 0 speedup is 0.00 

私たちは、それはあなたのファイルをgunzipsようにそれの前にのみ、ファイル・パス/名およびプリペンドviral/をつかむためにawkに最初にそのパイプをすることができます:それは今stdoutに次のようなものを吐き出すますちょうど(代わりにあなたがrsync'dそこからのものの)TO rsync'd:

rsync -rv ./ ../viral | awk '!NF{endFileList=1} NR>1 && endFileList!=1{print "../viral/"$0}' 

は、今、私たちは、rsyncのを持っているディレクトリにに送信されているファイル名のリストを吐き出しawkは。今度はそのリストを処理するためにgunzipを取得する必要があります。残念ながら、gunzipはファイルのリストを受け取ることができません。 gunzip何かをstdinに送ると、そのストリームはgzippedストリームであるとみなされ、それをgunzipしようとします。

代わりに、私たちは、あなたが上記の持っているxargs方法は、標準入力を取り、それが必要であることを、パラメータ(ファイル名)としてgunzipにそれを養うことを利用します:

rsync -rv ./ ../viral | awk '!NF{endFileList=1} NR>1 && endFileList!=1{print "../viral/"$0}' | xargs -l1 gunzip 

ほとんどの場合、あなたはこれを少し微調整する必要があります正しいファイル(あなたのFROMロケーションファイルまたはTOロケーションファイルのいずれか)をgunzippingしていることを確認してください。あなたがSSHのリモートコンピュータにrsyncingしている場合、これは明らかに難しくなります。それがちょうどパイプされることができるかどうかは分かりません。

関連する問題