我正在尝试查找以字母' a'开头的文件名。长度为6.我尝试了很多变化,最新的变化是:
find /usr/bin -type f -regex "^[a]" > grep {6}
但是我收到错误消息:
find: paths must precede expression: {6}
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
我做错了什么?
答案 0 :(得分:4)
没有任何正则表达式,只是通过以下方式:
find /usr/bin -type f -name 'a?????'
参考文献:
答案 1 :(得分:2)
我会使用以下使用扩展posix正则表达式的命令:
find /usr/bin -type f -regextype posix-extended -regex '.*/a.{5}'
让我从最后解释模式:
.{5}
匹配五个任意字符a
与文字a
/
匹配文件名.*
是路径,在本例中为/usr/bin
顺便说一下,一个甚至不需要特殊的正则表达式引擎的简单命令就是:
find /usr/bin -type f -regex '.*/a.....'
$
是文件名的末尾.....
是五个任意字符a
是文字a
.*/
是前面的路径另一件事。虽然你的正则表达式是错误的并且根本不需要grep
,为什么你会收到这个奇怪的错误信息?
您正在使用find ... > grep
,我认为您想使用find ... | grep
。请注意,>
会将find
命令的输出重定向到文件。在这种情况下,名为grep
的文件。如果要将find
命令的输出重定向到grep
命令的输入,则需要使用管道符号find ... | grep
。
> filename
重定向可以出现在命令行的任何位置,它不一定必须在最后。那'为什么{6}
被解释为find
的最后一个参数。由于这个参数不是预期的,find
假设你最后不小心通过了搜索路径,这是一个常见的错误。这就是消息的原因。