如何將信息輸入tar
指定文件的名稱?如何從stdin建立一個tar?
回答
喜歡的東西:
tar cfz foo.tgz -T -
但請記住,這不適用於所有可能的文件名;您應該考慮--null
選項並從find -print0
供應tar
。 (該xargs
例如將大文件列表不太工作,因爲它會產生多個tar
命令。)
而不是使用管道,你可以使用反引號,例如:
tar cvzf archive.tgz `ls -1 *`
相反的ls -1 *
你可以把它產生存檔所需的文件
唯一的問題是,如果ls命令的輸出長於shell的最大允許命令行大小,這將不起作用。在這種情況下,您必須按照其他答案的說法來做;允許列表任意長。此外,「find [...] print0」允許您創建一個具有特殊字符的成員的tar文件,而ls方法則不會。這種方法並不安全或普遍適用。 – 2012-10-16 17:33:50
find /directory > filename
tar -T filename -cf archive.tar
前面已經指出的geekosaur,也沒有必要管find
輸出到xargs
因爲它可以使用find ... -print0 | tar --null ...
直接輸出find
到tar
。
注中雖然不包括檔案文件gnutar
和bsdtar
之間的細微差別。
# exclude file.tar.gz anywhere in the directory tree to be tar'ed and compressed
find . -print0 | gnutar --null --exclude="file.tar.gz" --no-recursion -czf file.tar.gz --files-from -
find . -print0 | bsdtar --null --exclude="file.tar.gz" -n -czf file.tar.gz -T -
# bsdtar excludes ./file.tar.gz in current directory by default
# further file.tar.gz files in subdirectories will get included though
# bsdtar: ./file.tar.gz: Can't add archive to itself
find . -print0 | bsdtar --null -n -czf file.tar.gz -T -
# gnutar does not exclude ./file.tar.gz in current directory by default
find . -print0 | gnutar --null --no-recursion -czf file.tar.gz --files-from -
如果在當前目錄中找到,那麼只需使用../file.tar.gz作爲目標就足夠了。 – 2016-12-12 02:22:44
find /directory | tar -cf archive.tar -T -
您可以使用標準輸入與-T
選項。
請注意,如果您在使用一般的一定條件下(例如-name
選項)過濾文件,你需要排除目錄在管,否則將焦油處理他們所有的內容,這是不是你想要的。因此,使用方法:
find /directory -type f -name "mypattern" | tar -cf archive.tar -T -
如果你不使用-type
,匹配"mypattern"
目錄下的所有內容將被添加!
我認爲這種方法比其他方法更好,因爲您可以管道輸出到標準輸出的任何東西 – daks 2013-09-17 07:20:31
您可能想要考慮使用'find'來具體說明文件類型。具體來說,我會'find -type f'。這將排除符號鏈接,字符設備等。 如果你對'find -type f -o -type d'感興趣的空目錄。 – JamesThomasMoon1979 2015-09-30 02:32:11
爲了獲得更好的壓縮效果,使用bzip2可能會有幫助。
find $PWD -name "*.doc" > doc.filelist
tar -cvjf jumbo.tar.bz2 -T doc.filelist
- 1. 將tar轉換爲stdout/stdin
- 2. 將stdin作爲另一個文件添加到tar文件中
- 3. 如何建立一個URL
- 4. 如何建立一個表
- 5. 構建從stdin
- 6. 如何從stdin讀取一行
- 7. 如何從一個JSON對象建立ID的一串
- 8. 如何在AIX創建一個空的tar文件
- 9. 如何創建一個使用tar文件的setup.py
- 10. 如何從一個輸入創建兩個獨立的數組?
- 11. 如何從多個項目建立一個DLL
- 12. 如何在perl中從STDIN創建多個多維數組?
- 13. 如何建立一個詞彙表
- 14. 如何建立一個表動態
- 15. 如何建立一個嵌套形式
- 16. 如何建立一個掩模有效
- 17. 如何建立一個JSON對象
- 18. 如何建立一個3d環形圖
- 19. 如何建立一個多級菜單
- 20. 如何創建一個獨立的JVM?
- 21. 如何建立一個包到Nk.bin?
- 22. 如何建立一個與SWC文件
- 23. 如何建立一個節流的ExecutorService
- 24. 如何建立一個動態菜單
- 25. Tensorflow:如何建立一個CheckpointSaverHook
- 26. 如何建立一個字符表
- 27. 如何建立一個smtp服務器?
- 28. 如何建立一個長串?
- 29. 如何建立一個分佈輪廓
- 30. 擊:如何建立一個遞歸cowsay
我認爲@geekosaur應該打勾,因爲是更好地匹配問題的迴應。 – 2013-09-25 08:33:57
我改變了選擇的答案,你是對的。 – 2013-10-04 03:02:56