在unix上查找人类可读的文件

时间:2013-01-24 15:44:45

标签: linux find human-readable

我想在我的linux机器上找到没有文件扩展名约束的人类可读文件。这些文件应该是人类感知文件,如文本,配置,HTML,源代码等文件。你能建议一种过滤和定位的方法吗?

4 个答案:

答案 0 :(得分:13)

怎么样

find /dir/to/search -type f | xargs file | grep text

find将为您提供文件列表。

xargs file将在管道输入的每一行上运行file命令。

答案 1 :(得分:7)

在这里找到并归档你的朋友:

find /dir/to/search -type f -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print

这将在/ dir / to / search中找到任何文件(注意:它不会找到符号链接目录套接字等只有常规文件)并运行sh -c'file -b {} | grep text&> / dev / null'\;查看文件类型并在说明中查找文本。如果返回true(即文本在行中),则打印文件名。

注意:使用-b标志来表示文件名未打印,因此不能对grep产生任何问题。例如,如果没有-b标志,二进制文件gettext将被错误地检测为文本文件。

例如

root@osdevel-pete# find /bin -exec sh -c 'file -b {} |  grep text &>/dev/null' \; -print
/bin/gunzip
/bin/svnshell.sh
/bin/unicode_stop
/bin/unicode_start
/bin/zcat
/bin/redhat_lsb_init
root@osdevel-pete# find /bin -type f -name *text*
/bin/gettext

编辑:

如果要查看压缩文件,请使用--uncompress标志来存档。有关更多信息和标志文件,请参阅man file

答案 2 :(得分:1)

只是想分享一下,它也应该可以正常工作。

file_info=`file "$file_name"` # first reading the file info string which should have the words "ASCII" or "Unicode" if its a readable file 

if grep -q -i -e "ASCII" -e "Unicode"<<< "$file_info"; then
        echo "file is readable"
fi

答案 3 :(得分:-2)

我用

    file directory/to/search/* 

例如,在名为home use的目录中仅查找人类可读文件:

    file home/* 

,可读文件的格式如ASCII文本