find
find 命令
-name <pattern> 提供待匹配的文件名 pattern
-regex <pattern> 使用 EMACS regex 语法匹配文件路径(注意不是文件名)
-maxdepth <non-negative-number> 控制搜索的最大深度
-mindepth <non-negative-number> 控制搜索的最小深度
-exec <commands> ; 对匹配到的每个文件执行 command
执行时将 command 中的 {} 替换为当前匹配到的文件
exec 读入 command 内容时到分号为止
为了防止被 shell 替换,一般把 {} 和 ; 保护起来,如 '{}' 和 ;
一个能运作的例子:
find . -maxdepth 1 -name "*.lbl" -exec echo '{}' \;
查找当前目录下所有后缀为 .lbl 的文件并打印文件名
man find 中的 OPERATORS 一节提供了参数级别的搜索条件运算
() 可以提升运算的优先级,但要写成 \( \) 转义,且和其他参数之间以空格分隔
-a 以与关系连接两个搜索条件,当且仅当左侧条件满足时计算右侧条件
-o 以或关系连接两个搜索条件,当且仅当左侧条件不满足时计算右侧条件
一个能运作的例子:
find . -maxdepth 1 \( -name '*.typ' -o -name '*.lbl' \) -exec echo '{}' \;
查找当前目录下所有后缀为 .typ 或 .lbl 的文件并打印文件名
Last updated
Was this helpful?