经过一番搜索,我想出了这个命令:
> find . -type f \( -name "*.exe" \) | egrep -v
> 'games_1|rei|games|tor|jogos|mods|text' > 1
我想要做的是查找扩展名为 .exe 的文件,但包含任何这些字符串的路径除外,然后将结果打印到名为“1”的文件中,我将其写入可执行文件。
但是,在终端中执行时,出现以下错误并且没有执行任何操作:
find: ‘./NUNO-PC/Disco_2TB_120323/Downloads_070321/My Web Sites/wdsdeewre/2.bp.blogspot.com’: Input/output error
find: ‘./NUNO-PC/Disco_2TB_120323/Downloads_070321/My Web Sites/wdsdeewre/segredoh.blogspot.com/feeds’: Input/output error
find: ‘./NUNO-PC/Disco_2TB_120323/Downloads_070321/My Web Sites/wdsdeewre/4.bp.blogspot.com’: Input/output error
find: ‘./NUNO-PC/Disco_2TB_120323/Downloads_070321/My Web Sites/wdsdeewre/3.bp.blogspot.com/-ux8HFQj0iuE/WQ9ywGiPXOI’: Input/output error
grep: write error: Input/output error
./encontrarsoft: error reading input file: Invalid argument
我缺少什么?
您显示的错误实际上没有意义,因为 grep 似乎正在尝试读取文件,但您的命令不会导致这种情况。无论如何,这些错误与磁盘上有问题的文件/扇区有关,而不是与您的命令有关,并且您
grep
无论如何都不需要,因此我们可以避免它。顺便说一句,不要使用,egrep
因为它已经过时了,grep -E
而是使用。以下是如何使用单个
find
命令执行您想要的操作:这将查找名称以 结尾
.exe
且其整个路径(包括名称)与任何提到的字符串都不匹配的文件。find 的默认正则表达式语言是 Emacs 正则表达式,在这些语言中,您需要对两者进行转义( )
,|
以使它们分别具有分组和 OR 的特殊含义。或者,您可以find
设置egrep
正则表达式的样式并简化为:(请注意,
\
只是断行以避免水平滚动;命令可以按原样直接复制/粘贴到终端中,但您也可以在一行上完成整个操作。)