我正在尝试通过find
发送从file -b
到grep
命令的输出,忽略我在regex中定义的特定文件。据我所知,我认为你无法将输出输出到file
。
你有什么想法我怎么能不使用任何外部文件?
我不需要使用grep来忽略文件,但我需要使用指定的正则表达式来忽略文件和实用程序file
的输出,所以如果有另一个选项,我会对它开放。
提前致谢:)
我尝试了什么:
find dir -type f -exec file -b {} \;
这对我有用,但不会忽略任何文件
find dir -type f -exec grep -v 'file.' {} \; -exec file -b {} \;
作为第一个例子,但打印出我不需要的文件内容
编辑:我需要忽略文件名和路径,而不是file
EDIT2:这是我的文件夹
dir
dir/a
dir/a/b
dir/a/b/c
dir/a/b/c/file
dir/a/b/filec
dir/a/fileb
dir/filea
每个文件都是ASCII文本的类型,我想要的输出是使用此正则表达式'file(a|b)'
来忽略名为filea
和fileb
的文件,而不是名为file
的文件和filec
不适合正则表达式,所以我的命令所需的输出将是
ASCII text
ASCII text
答案 0 :(得分:1)
如果我做得不对,就像:
find dir -type f -exec file {} + | grep -Ev ':\s*ASCII text|empty'
将列出不是ASCII text
或empty
的文件。
如果您需要提前grep文件名:
find dir -type f -print | grep -v 'pattern' | file -b -f -
答案 1 :(得分:1)
使用find
find dir -type f ! -name 'file[ab]' -exec file -b {} \;
或许只是bash:
shopt -s globstar
for f in dir/**/file[^ab]; do
file -b "$f"
done
答案 2 :(得分:1)
如果您想忽略模式,您可以使用!
运算符,它的工作方式如下:
find -type f ! -name "file[ab]"