仅列出当前目录中 ASCII 文本类型文件的脚本?

仅列出当前目录中 ASCII 文本类型文件的脚本?

如何编写一个 shell 脚本来搜索当前 UNIX 目录并返回 ASCII 文本类型的所有文件的名称?

答案1

两个世界中最好的:避免使用无用的xargs,并加快速度,因为它+会触发并行调用。

find . -type f -exec file {} + | grep ASCII

答案2

对当前目录中的所有文件执行 'file',然后 grep 查找 'ASCII':

find . -maxdepth 1 -exec file {} \; | grep ASCII

答案3

find . -type f -print0 | xargs -0 file | grep ASCII

在 CentOS 5 上,ASCII 可以表示很多东西,例如“ASCII C++ 程序文本”、“ASCII 英语文本”和“ASCII 文本”,因此您可能需要进一步缩小范围。

答案4

假设您获取目录名称作为参数 ($1),那么,

ls $1 | while read name
    do
        # "file" returns file type
        file $1/$name | grep -i 'ascii' &> /dev/null

        # $? gives exit status of previous command
        if [ $? -eq 0 ]; then
            # $1/$name is your ascii file, process it here...
        fi
    done

相关内容