使用 find 命令实现高级排除需求
Linked
关于 find 命令,本博客介绍过 介绍过 。
介绍这些的基本需求是进行文件管理。事实上,基于终端进行 似乎有些许局限。 那么,如果希望据说强大的文件搜寻与处理功能。我们还得回到find
命令上来,本文基于 "--prune" 参数进行说明。 Deleted
# find . -name "*git*"./themes/snippet/layout/_vendor/comments/gitment.ejs./themes/landscape/.gitignore./.gitignore./.git
这样我们可以找到所有带 "git" 的文件或者文件夹。更多细节可查询附录内 "find 查询参数" 一节。
Judge
find 命令本身是带条件判定的。在早期写脚本的时候由于不知道这个技巧,于是采用输出信息行数判断以确定是否搜索到信息。
在 find 命令中,-o
表示前者执行成功后者不执行;'-a' 表示前者执行成功后者执行。
# find . -name "*git*" -prune -a -printf "该条包含 git 信息\n" 该条包含 git 信息该条包含 git 信息该条包含 git 信息该条包含 git 信息# find . -name "*git*" -prune -a -print ./themes/snippet/layout/_vendor/comments/gitment.ejs./themes/landscape/.gitignore./.gitignore./.git
# find . -name "*git*" -prune -o -printf "该条不包含 git 信息\n"
使用这条命令也就实现了高级排除的需求。
Appendix
find 查询参数细节
# find . -name "*git*" -type f./themes/snippet/layout/_vendor/comments/gitment.ejs./themes/landscape/.gitignore./.gitignore# find . -name "*git*" -type d./.git# find . -path "./.git"./.git
tips: '-name "string" -type d' 和直接 '-path "Relative_directory/directory"'。
Attention: 使用 '-path' 后跟的目录必须是相对地址并且在尾部不可以加斜杠,且不可使用通配符。