2016-08-08 45 views
3

我有一個大約20000個tar.gz目錄的文件夾,每個目錄都包含一堆文件。我想進入源文件夾,遍歷tar.gz目錄(而不解壓)並連接文件,最後我將有三個大文件。遍歷.tar.gz目錄並連接文件(不解壓縮文件夾)

例如,我有一個根目錄文件夾pnoc其中有.tar.gz目錄,每個壓縮文件夾有三個文件夾 - Kallisto,RSEMHugo。我已經解壓縮一個這樣的目錄,如下所示:

pnoc/ 
├── C021_0001_20140916_tumor_RNASeq.tar.gz 
├── C021_0002_001113_tumor_RNASeq.tar.gz 
├── C021_0003_001409_tumor_RNASeq.tar.gz 
├── C021_0004_001418_tumor_RNASeq.tar.gz 
├── C021_0005_001661_tumor_RNASeq.tar.gz 
├── C021_0007_001669_tumor_RNASeq.tar.gz 
├── C021_0008_001699_tumor_RNASeq.tar.gz 
├── C021_0009_001766_tumor_RNASeq.tar.gz 
├── C021_0010_001774_tumor_RNASeq.tar.gz 
├── C021_0011_001786_tumor_RNASeq.tar.gz 
├── C021_0012_001825_tumor_RNASeq.tar.gz 
├── C021_0013_001872_tumor_RNASeq.tar.gz 
├── CPBT_0001_1_tumor_RNASeq.tar.gz 
├── CPBT_0003_1_tumor_RNASeq.tar.gz 
├── CPBT_0004_1_tumor_RNASeq.tar.gz 
├── CPBT_0005_1_tumor_RNASeq.tar.gz 
├── CPBT_0006_1_tumor_RNASeq.tar.gz 
├── CPBT_0007_1_tumor_RNASeq.tar.gz 
├── CPBT_0008_1_tumor_RNASeq.tar.gz 
├── CPBT_0009_1_tumor_RNASeq.tar.gz 
├── IMPROPERLY_PAIRED.C021_0006_001666_tumor_RNASeq.tar.gz 
└── pnoc-manifest 


C021_0001_20140916_tumor_RNASeq 
├── Kallisto 
│   ├── C021_0001_20140916_tumor_RNASeq.abundance.h5 
│   ├── C021_0001_20140916_tumor_RNASeq.abundance.tsv 
│   └── C021_0001_20140916_tumor_RNASeq.run_info.json 
└── RSEM 
    ├── C021_0001_20140916_tumor_RNASeq.rsem.genes.norm_counts.tab 
    ├── C021_0001_20140916_tumor_RNASeq.rsem.genes.raw_counts.tab 
    ├── C021_0001_20140916_tumor_RNASeq.rsem.isoform.norm_counts.tab 
    ├── C021_0001_20140916_tumor_RNASeq.rsem.isoform.raw_counts.tab 
    ├── C021_0001_20140916_tumor_RNASeq.rsem_genes.results 
    ├── C021_0001_20140916_tumor_RNASeq.rsem_isoforms.results 
    └── Hugo 
     ├── C021_0001_20140916_tumor_RNASeq.rsem.genes.norm_counts.hugo.tab 
     ├── C021_0001_20140916_tumor_RNASeq.rsem.genes.raw_counts.hugo.tab 
     ├── C021_0001_20140916_tumor_RNASeq.rsem.isoform.norm_counts.hugo.tab 
     ├── C021_0001_20140916_tumor_RNASeq.rsem.isoform.raw_counts.hugo.tab 
     ├── C021_0001_20140916_tumor_RNASeq.rsem_genes.hugo.results 
     └── C021_0001_20140916_tumor_RNASeq.rsem_isoforms.hugo.results 

所以我想連接在一個所有* .abundance.tsv,* .rsem.genes.norm_counts.tab在第二和* .rsem_genes.hugo第三個文件中的結果。什麼是最好和最有效的方式來做到這一點?我對任何事情都沒問題 - RPythonBash

$ find --version 
find (GNU findutils) 4.5.11 
Copyright (C) 2012 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. 

Written by Eric B. Decker, James Youngman, and Kevin Dalley. 
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION SELINUX FTS(FTS_CWDFD) CBO(level=2) 

謝謝!

+0

您是否必須使用python/r?一個簡單的bash腳本可能會更快。 :) –

+0

是的,我可以使用任何東西,我只是想要第一部分,你去tar.gz沒有解壓縮和連接文件。 –

回答

3

使用bashfind命令如下; exec中的cat命令應用於該命令返回的所有文件。 +選項旨在確保shell不會生成一個以上的cat實例。

這裏{}表示返回find命令的文件。請參閱更多關於find -exec

find . -type f -name '*.abundance.tsv' -exec cat "{}" + >> ../AbundanceTSV.tsv 
find . -type f -name '*.rsem.genes.norm_counts.tab' -exec cat "{}" + >> ../GenesNormCounts.tab 
find . -type f -name '*.rsem_genes.hugo.results' -exec cat "{}" + >> ../HugoResults.results 
+0

你能解釋一下這個命令在做什麼嗎?謝謝!爲什麼需要「../」? –

+0

@KomalRathi:趕上!即確保輸出文件不被'find'處理。 – Inian

+0

我得到一個空的結果。是否因爲二級目錄全部壓縮?因爲我找到了./pnoc/ -type f -name'* .abundance.tsv',並且它沒有返回任何東西。 –

相關問題