我在使用bash中的find命令时遇到问题。 我正在尝试查找以.c结尾且文件大小超过2000字节的文件。我以为会是:
find $HOME -type f -size +2000c .c$
但显然这是不正确的。
我做错了什么?
答案 0 :(得分:5)
find $HOME -type f -name "*.c" -size +2000c
查看鬃毛页面中的-name
开关:
-name pattern
Base of file name (the path with the leading directories
removed) matches shell pattern pattern. The metacharacters
(`*', `?', and `[]') match a `.' at the start of the base name
(this is a change in findutils-4.2.2; see section STANDARDS CON‐
FORMANCE below). To ignore a directory and the files under it,
use -prune; see an example in the description of -path. Braces
are not recognised as being special, despite the fact that some
shells including Bash imbue braces with a special meaning in
shell patterns. The filename matching is performed with the use
of the fnmatch(3) library function. Don't forget to enclose
the pattern in quotes in order to protect it from expansion by
the shell.
请注意最后的建议是始终将模式括在引号内。选项的顺序无关紧要。再看看手册页:
EXPRESSIONS
The expression is made up of options (which affect overall operation
rather than the processing of a specific file, and always return true),
tests (which return a true or false value), and actions (which have
side effects and return a true or false value), all separated by opera‐
tors. -and is assumed where the operator is omitted.
If the expression contains no actions other than -prune, -print is per‐
formed on all files for which the expression is true.
因此,默认情况下,选项与-and
运算符相关联:为了找到文件并且顺序无关紧要,它们必须全部为真。该订单仅适用于更复杂的模式匹配,其中除了-and
之外还有其他运算符。
答案 1 :(得分:0)
试试这个:
find $HOME -type f -size +2000c -name *.c
答案 2 :(得分:0)
尝试以下方法:
find $HOME -type f -size +2000c -name *.c