2009-09-20 83 views
0

我正在查找一個命令,它將分別壓縮目錄中的每個文件夾,每個文件夾的名稱反映了原始文件夾名稱。我知道命令批量壓縮目錄下的所有文件/文件夾

焦油czvf example.tar.gz例如/

將壓縮整個文件夾。但是,我還沒有找到批量歸檔的命令。有這樣的命令嗎?

+1

是的,我在你的未來看到find,xargs和sed。 – 2009-09-20 20:02:37

+0

是的,你sed它;) – undoIT 2009-09-21 00:24:43

回答

1
find -mindepth 1 -maxdepth 1 -type d -exec tar czf {}.tar.gz {} \; 

請注意,我用-maxdepth 1

考慮目錄結構:

. 
|-- a 
| `-- x 
|-- b 
`-- c 

沒有-maxdepth 1你會得到a.tar.gza/x.tar.gza.tar.gz將包含x和其中的所有文件;而a/x.tar.gz將包含x及其文件。但是,如果這不是目標,它會將這些項目存儲在x中兩次。

更新使用-mindepth 1爲好,因爲當外界的example/example.tar.gz將創建上運行。

更新 ...和bzip2的:

find -mindepth 1 -maxdepth 1 -type d -exec tar cjf {}.tar.bz2 {} \; 
+0

沒有-mindepth 1,它不會創建當前目錄的存檔? – 2009-09-20 20:17:41

+0

我也這麼認爲,但是當我測試它時,我沒有看到發生這種情況。 – opello 2009-09-20 20:35:26

+0

但是如果你在「example /」中執行它,它不會,如果你不這樣做,它會。將更新。 – opello 2009-09-20 20:38:12

1
for f in `find -mindepth 1 -maxdepth 1 -type d`; do 
    tar -czf $f.tar.gz $f 
done 
+0

謝謝!正是我在找什麼。 – undoIT 2009-09-20 23:49:16

+0

好的,還有一個問題。如果我想壓縮到bzip2,那麼完整的命令是什麼? – undoIT 2009-09-21 00:18:10

0

好了,這裏就是我想出了存檔,然後用bzip2壓縮的最大壓縮

發現-mindepth最後的命令1 -maxdepth 1 -type d -exec tar cjf'{}'。tar.bz2'{}'\;

謝謝大家!

相關問題