查找固定长度的文件
Finding files of fixed length
我正在尝试查找以字母 '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]
我做错了什么?
我会使用以下使用 扩展 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
假设你不小心在最后传递了一个搜索路径,这是一个常见的错误。这就是消息的原因。
没有任何正则表达式,只是 globbing:
find /usr/bin -type f -name 'a?????'
参考文献:
- Findutils 手册:Shell pattern matching
- Bash 手动,Filename expansion and pattern matching
我正在尝试查找以字母 '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]
我做错了什么?
我会使用以下使用 扩展 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
假设你不小心在最后传递了一个搜索路径,这是一个常见的错误。这就是消息的原因。
没有任何正则表达式,只是 globbing:
find /usr/bin -type f -name 'a?????'
参考文献:
- Findutils 手册:Shell pattern matching
- Bash 手动,Filename expansion and pattern matching