我恢復了一個錯誤的rm命令被激活的驅動器。現在我有一個包含逐步命名爲00000001.txt 00000002.txt百萬文本文件...
他們中的很多僅僅包含無法識別的字符作爲yÏÞxìϾûïgçØ> 0的文件夾| O> * SS>Ï3ìó} ..
怎麼可能我用bash輕鬆刪除包含字符的文件?如何刪除bash中包含未識別字符的所有文件?
回答
for i in *.txt
do
if ! chardet "$i" | grep -q 'ascii'
then
echo rm "$i"
fi
done
對不起..也許我寫了我的問題很糟糕。無法識別的字符在文件內容中不在文件名中:) – 2012-03-06 14:17:39
我已更新。您可以使用'chardet'命令來檢查文件的編碼。如果不是'ascii',請刪除它。 – kev 2012-03-06 14:24:44
這正是我需要的!謝謝 :) – 2012-03-06 14:33:23
一般什麼honeyp0t說,但如果不工作,有使用系統工具clri
,這通常被稱爲「猛藥」的另一種方式。
clri
做什麼是直接刪除一個inode關閉filsystem。你需要知道文件的inode號碼。這裏的想法是:
- 您使用
ls -il
列出文件,其中inode編號是輸出中最左邊的數字。 - 對所有壞文件重複1),然後卸載文件系統。
- 運行
clri
的inode數的壞文件。 - 運行fsck並讓它修復損壞。
祝你好運。
編輯:
例子:
22005 drwxrwxr-x 2 bos bos 2504 Apr 13 2011 scripts
22005是我的系統上的目錄 「腳本」 的inode編號。
GNU find也可以基於inode刪除。 '找。 -maxdepth 1 -inum
egrep "[^a-Z ,.;:#+*?-9°$'\"<=>|_\!-]" {00000001..1000000}.txt
應該是一個開始,顯示,包括哪些其他字符。
隨着
egrep -q FILE && rm FILE
可以刪除一切,這不符合你的格局:
for f in {00000001..1000000}.txt
do
egrep -q "[^a-Z ,.:#+*?-9°$'\"<=>|_\!-]" "$f" && rm "$f"
done
肯定是存在的正則表達式的一些可能的優化。
- 1. 如何識別包含(域)子字符串的所有URL?
- 2. 刪除所有包含字符串的文件
- 3. 如何刪除bash中的字符後的所有文本?
- 4. 如何刪除BASH中包含少於兩個的所有行?
- 5. 如何在BASH中替換或刪除包含/字符的行?
- 6. 從目錄中的所有文件中刪除包含字符串的行
- 7. 如何刪除文件名中包含多字節字符的文件?
- 8. 從Bash中的字符串中刪除所有特殊字符
- 9. 如何從BASH中的字符串中刪除所有非數字字符?
- 10. Linux:刪除不包含所有指定字的文件
- 11. 刪除LINQ中不包含特定字符串的所有行
- 12. 刪除名稱中包含特定字符串的所有Cookie
- 13. 如何刪除numpy.ndarray中包含非數字值的所有行
- 14. 如何刪除不包含字符串的文件? - Windows
- 15. 從文件bash中刪除字符串
- 16. 如何刪除與特定字符串的所有行,但不刪除包含在同一個文件
- 17. 如何從包含字符的X個文本文件中刪除字?
- 18. 如何刪除BASH中只包含數字的行?
- 19. 如果包含字符串,則刪除所有元素
- 20. 從只包含數字的.csv文件中刪除字符
- 21. 如何從bash中的文件中刪除字符串
- 22. 在文本文件中刪除包含特定字符的行
- 23. PHP從文本文件中刪除包含字符串的行
- 24. BASH:如何刪除清單中指定的所有文件?
- 25. 虛擬包含未識別
- 26. 如何從字符串中刪除包含文本的標籤
- 27. 如何刪除所有字母,數字'@'和'。'從bash中的文件?
- 28. 刪除包含字符串
- 29. 如何刪除不包含在正則表達式中的所有字符
- 30. 如何識別整數數組包含C中的字符?
這是什麼意思是「無法識別」的字符?你將不得不澄清。你期望內容完全是ASCII嗎? – Borealid 2012-03-06 13:46:46
@Borealid我可能想保留的文件是由用戶在正常例程中創建的文件..所以他們只是打開文本編輯器並保存他們的文件..我認爲ascii utf8和iso-8859-1可以作爲參考碼。我想刪除的文件是那些用普通編輯器打開時不可讀內容的文件。 – 2012-03-06 13:56:29