我恢复了一个错误的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. 如何删除bash中的字符后的所有文本?
- 3. 如何删除BASH中包含少于两个的所有行?
- 4. 如何在BASH中替换或删除包含/字符的行?
- 5. 如何删除字符串中包含第3个斜杠的所有字符?
- 6. 删除字符串之前的所有文本并包含url
- 7. 如何删除文件名中包含多字节字符的文件?
- 8. 从Bash中的字符串中删除所有特殊字符
- 9. Linux:删除不包含所有指定字的文件
- 10. 删除LINQ中不包含特定字符串的所有行
- 11. 如何删除numpy.ndarray中包含非数字值的所有行
- 12. 如何删除不包含字符串的文件? - Windows
- 13. 如何删除BASH中只包含数字的行?
- 14. BASH:如何删除清单中指定的所有文件?
- 15. 虚拟包含未识别
- 16. 如何删除所有字母,数字'@'和'。'从bash中的文件?
- 17. 如何识别整数数组包含C中的字符?
- 18. 删除所有包含两次字符的行
- 19. 使用sed删除包含多个字符串的所有行
- 20. Powershell:删除包含字符串的所有注册表项
- 21. 如何搜索包含特定字符串的所有文件?
- 22. 如何查找包含字符串的所有文件?
- 23. PHP:删除所有包含给定类别或标识的标签
- 24. AWS-SDK:SQS如何识别BatchDeleteOperation中未删除的邮件
- 25. 识别并删除奇怪的字符
- 26. 删除名称中包含字符串的文件
- 27. 删除除名称中包含字符串的程序外的所有程序
- 28. bash - 如何查找和压缩包含字符串的文件?
- 29. 如何删除所有的字符串
- 30. 删除嵌套的文件夹中的所有文件,其中包含“_bla”
这是什么意思是“无法识别”的字符?你将不得不澄清。你期望内容完全是ASCII吗? – Borealid 2012-03-06 13:46:46
@Borealid我可能想保留的文件是由用户在正常例程中创建的文件..所以他们只是打开文本编辑器并保存他们的文件..我认为ascii utf8和iso-8859-1可以作为参考码。我想删除的文件是那些用普通编辑器打开时不可读内容的文件。 – 2012-03-06 13:56:29