如何找到因磁盘故障而具有连续0(零字节 - 0x00)长链的文件?例如,如何查找序列中超过10000个零字节的文件?
当然,我可以使用Java或其他编程语言编写程序,但有没有办法使用或多或少的标准Linux命令行工具?
更新
您可以使用dd if=/dev/zero of=zeros bs=1 count=100000
生成测试文件。
答案 0 :(得分:2)
这可能是一个开始:
find /some/starting/point -type f -size +10000 -exec \
perl -nE 'if (/\x0{10000}/) {say $ARGV; close ARGV}' '{}' +
答案 1 :(得分:1)
测试单个文件,名为 filename :
if tr -sc '\0' '\n' < filename | tr '\0' Z | grep -qE 'Z{1000}'; then
# ...
fi
您现在可以使用合适的find
命令过滤相关文件进行测试。
例如,*.txt
中的所有PWD
个文件:
while read -rd '' filename;do
if tr -sc '\0' '\n' < "$filename" | tr '\0' Z | grep -qE 'Z{1000}'; then
# For example, simply print "$filename"
printf '%s\n' "$filename"
fi
done < <(find . -type f -name '*.txt' -print0)
答案 2 :(得分:-1)
查找和grep应该可以正常工作:
grep -E "(\0)\1{1000}" <file name>
如果它是同一个目录中的单个文件或一组文件
如果你想在整个系统中搜索:
find /dir/ -exec grep -E "(\0)\1{1000}" {} \; 2> /dev/null
这是非常缓慢的,如果你正在寻找更快的东西,并且可以没有千(或大量)的零 我建议用'grep 000000000 *'代替
替换grep