如何编写一个 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