我將一些東西解開成一個已經包含很多東西的目錄。我想解開一個單獨的目錄。現在有太多的文件可以區分。然而,我已經解開的文件已經被創建(對嗎?),並且原始文件沒有被修改很長時間(至少一天)。有沒有辦法根據它們的創建信息刪除這些untarred文件?如何刪除最近在linux目錄下創建的所有文件?
回答
Tar通常會恢復文件時間戳,因此按時間過濾不太可行。
如果您仍然有tar文件,你可以用它來刪除你喜歡的東西解壓什麼:
tar tf file.tar --quoting-style=shell-always |xargs rm -i
以上在大多數情況下工作,但不是所有的(文件名有一個回車在他們將打破它),所以要小心。
您可以通過將-r
添加到目錄中來刪除這些目錄,但只需手動刪除頂層目錄可能更安全。
找到。 -mtime -1 -type f | xargs rm
但首先用
找到。 -mtime -1 -type f | xargs回聲
除了兩件事之外,這將是一件好事。首先,**總是**使用'-print0'和'xargs -0'。您不希望文件名中的隨機空格字符導致您的問題。其次,'tar'恢復時間戳,所以你不能在這裏實際使用mtime。也許是,如果你的文件系統被配置爲更新它,也許是。 – Omnifarious
另外,請注意例如在最近10分鐘內找到修改文件的-mmin -10 – sehe
對這個問題有幾種不同的答案,以增加複雜性的順序。
首先,如果這是一次性的,並且在這個特定的實例中,您絕對確信文件名中沒有奇怪的字符(空格是好的,但不是製表符,換行符或其他控制字符,也不是unicode字符)這將工作:
tar -tf file.tar | egrep '^(\./)?[^/]+(/)?$' | egrep -v '^\./$' | tr '\n' '\0' | xargs -0 rm -r
所有這egrepping是跳過所有的子目錄的子目錄。
另一種方式來做到這一點,與時髦的文件名的工作原理是這樣的:
mkdir foodir
cd foodir
tar -xf ../file.tar
for file in *; do rm -rf ../"$file"; done
,將創建在你的檔案已經擴大的目錄,但它聽起來像你想的是反正已經。它也不會處理任何名稱以.
開頭的文件。
爲了與文件與.
啓動方法工作,做到這一點:
mkdir foodir
cd foodir
tar -xf ../file.tar
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 sh -c 'for file in "[email protected]"; do rm -rf ../"$file"; done' junk
最後,從Mat's answer服用,你能做到這一點,它會爲任何文件工作,而不是要求您解包再次目錄:
tar -tf file.tar | egrep '^(\./)?[^/]+(/)?$' | grep -v '^\./$' | tr '\n' '\0' | xargs -0 bash -c 'for fname in "[email protected]"; do fname="$(echo -ne "$fname")"; echo -n "$fname"; echo -ne "\0"; done' junk | xargs -0 rm -r
您可以處理的文件和目錄在一個道次:
tar -tf ../test/bob.tar --quoting-style=shell-always | sed -e "s/^\(.*\/\)'$/rmdir \1'/; t; s/^\(.*\)$/rm \1/;" | sort | bash
你可以看到什麼事情發生留下斷管「慶典」
tar -tf ../test/bob.tar --quoting-style=shell-always | sed -e "s/^\(.*\/\)'$/rmdir \1'/; t; s/^\(.*\)$/rm \1/;" | sort
處理與換行符的文件名,你需要更多的處理。
- 1. 蝙蝠文件刪除除最後創建的所有目錄
- 2. 如何讓所有文件在linux下的目錄下可讀?
- 3. 如何用PHP刪除指定目錄下的所有文件?
- 4. 如何刪除所有目錄中的所有文件?
- 5. 刪除除4個最新目錄以外的所有文件
- 6. 刪除目錄中的所有文件
- 7. 如何在不刪除Node.js中的目錄的情況下從目錄中刪除所有文件
- 8. 如何刪除在C從指定目錄下所有的文本文件++
- 9. 空目錄(刪除所有文件)
- 10. 刪除目錄及所有文件中
- 11. 刪除所有文件,但不目錄
- 12. 如何在不刪除文件的情況下清空(刪除全部內容)目錄中的所有文件?
- 13. 我如何刪除在訪問表中的所有記錄,除了最近
- 14. 創建目錄並最終刪除它
- 15. 重命名最新創建的文件的目錄,在linux
- 16. 如何用C++刪除目錄及其中的所有文件?
- 17. 如何刪除目錄中空的所有文件?
- 18. 如何刪除某個特定目錄中的所有文件
- 19. 如何使用批次刪除目錄中的所有文件?
- 20. 如何刪除指定目錄的所有文件擴展名?
- 21. 如何從AWS s3中刪除最近5次最近更新/新文件以外的所有文件?
- 22. 刪除目錄和所有子目錄中的特定文件
- 23. 刪除目錄中的所有文件,但保留目錄?
- 24. 刪除除X以外的所有文件夾最近的文件夾
- 25. 創建下使用單個命令所有目錄的新目錄:Linux的
- 26. 如何在目錄下構建所有build.xml(.java)文件
- 27. 使用linux shell在目錄中顯示最近的文件
- 28. 如何排除Gradle中目錄下的所有文件?
- 29. 如何在linux中刪除pendrive中的所有exe文件
- 30. 刪除所有macosx目錄中的所有svn文件
使它與文件名中的空格一起工作真的很容易,而且這將是一個更好的答案。 – Omnifarious
@omnifa如何使這個工作與空間?刪除提取的目錄,我是否也應該在rm之後包含-R? – AnkurVj
@AnkurVj:不幸的是,實際上沒有辦法讓tar給你一個空字符分隔的文件名列表,這是相當令人失望的。是的,在'rm'之後應該有一個'-r'。由於馬特沒有更新答案,我會自己填寫。 – Omnifarious