Linux find命令的使用及常用参数

find命令简介

find命令是linux下用于系统查找文件的强大工具,可以根据文件的大小,名称,权限,修改日期等进行查询,参考一些网上非常优秀的博客来进行一些简单应用向的总结。首先是find命令的使用形式:

find paths expression actions

指定多条路径(paths)执行指定过滤条件(expression)并执行相关操作(actions),最终得到结果。

使用find遍历所有文件

以下代码将遍历当前目录所有文件及目录,以及子目录下的文件及目录
针对以下的目录结果:

$ tree dir_tree
dir_tree
├── dir_1
│   ├── file_1.png
│   ├── file_1.sh
│   └── file_1.txt
├── dir_2
│   ├── file_2.png
│   ├── file_2.sh
│   └── file_2.txt
└── dir_3
    ├── file_3.png
    ├── file_3.sh
    └── file_3.txt

运行如下代码,将遍历所有文件

$ find dir_tree/
dir_tree/
dir_tree/dir_3
dir_tree/dir_3/file_3.sh
dir_tree/dir_3/file_3.txt
dir_tree/dir_3/file_3.png
dir_tree/dir_2
dir_tree/dir_2/file_2.sh
dir_tree/dir_2/file_2.txt
dir_tree/dir_2/file_2.png
dir_tree/dir_1
dir_tree/dir_1/file_1.png
dir_tree/dir_1/file_1.sh
dir_tree/dir_1/file_1.txt

使用find执行文件过滤

  • -name 将得到指定名称的文件,可以使用通配符
  • -iname-name相同,但是是case insensitive大小写不敏感
  • -path-ipath-name/-iname类似,但是提供全路径的匹配
    --maxdepth/-mindepth提供最大和最小遍历深度
  • -type指定文件类型 f文件/d目录/l符号链接
  • -empty空文件
  • 取反
  • -user 用户
  • -mtime/-atime/-ctime,修改/访问/创建时间使用如下截图
    在这里插入图片描述
  • -size 文件大小
  • -perm 例如 -perm 755 或者 -perm -u=rwx,g=rx,o=rx,如果只关注某一个权限,可以在前加一个斜杠,例如以下代码将列出所有人都有read权限的文件
find dir_tree -perm /a=r -exec ls -ld {} \;
  • -a-o可以将这些命令进行and和or的组合,判断复杂时需要加括号,而括号和判断语句之间应该有一个空格相间隔,同时使用单引号包围或者反斜杠进行转义,如下例子将找到目录下后缀为sh和png的文件。
$ find dir_tree/ '(' -name "*.sh" -o -name "*.png" ')' -a -type f
dir_tree/dir_3/file_3.sh
dir_tree/dir_3/file_3.png
dir_tree/dir_2/file_2.sh
dir_tree/dir_2/file_2.png
dir_tree/dir_1/file_1.png
dir_tree/dir_1/file_1.sh

使用find对搜索结果执行命令

  • -delete 删除操作
  • -exec 执行自定义命令,如下所示
$ find dir_tree/ '(' -name "*.sh" -o -name "*.png" ')' -a -type f -exec echo "cat {} > xxx" ';'
cat dir_tree/dir_3/file_3.sh > xxx
cat dir_tree/dir_3/file_3.png > xxx
cat dir_tree/dir_2/file_2.sh > xxx
cat dir_tree/dir_2/file_2.png > xxx
cat dir_tree/dir_1/file_1.png > xxx
cat dir_tree/dir_1/file_1.sh > xxx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章