find 命令默认是以 递归 的方式检索项目的 , 这有时候会导致得到的结果数量非常巨大 。可以使用-maxdepth限制 find 命令递归的层数 。
例如:搜索时向下递归的层数最大为 3
在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转。
实际上 find 命令支持“and”和“or”两种逻辑运算,对应的命令选项分别是-a和-o。通过这两个选项可以对搜索条件进行更复杂的组合 。
此外还可以使用 小括号 对搜索条件进行 分组。注意find命令中的小括号常需要用 单引号 包裹起来 。因小括号在 Shell 中有特殊的含义 。
如检索 /usr 下文件名以python开头且类型为目录的文件
该命令等同于:
更复杂的组合形式如:
例4:在除dir0及子目录以外的目录下查找txt后缀文件
说明:-a 应该是and的缩写,意思是逻辑运算符‘与’(); -o应该是or的缩写,意思是逻辑运算符‘或’(||), -not 表示非.
命令行的意思是:如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真 , ‘与’逻辑表达式为真(即-path './dir0*' -a -prune 为真),find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),则不求值-prune,‘与’逻辑表达式为假,则在当前目录下查找所有txt后缀文件 。
-delete选项可以用来删除搜索到的文件和目录 。
例如:删除 home 目录下所有的空目录:
-exec选项可以对搜索到的结果执行执行该参数所给出的shell命令 。形式为 command {} \;,注意{}与\;之间有空格。每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的{} , 然后执行-exec后面的命令一次 。
例1:如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是/media/MyDrive ),可使用下面的命令:
其中的 大括号 ( {} )作为检索到的文件的占位符 , 而分号(; )作为命令结束的标志 。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来或前面加上转义符 \。
例2:查看当前目录下的所有普通文件,并在 - exec 选项中使用 ls -l 命令将它们列出
例3:在多个文件中检索某个指定的字符串 。如在用户主目录下的所有文件中检索字符串hello,可以使用如下命令:
创建 Gzip 格式的压缩文件的命令为:
现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包music.tar.gz中,直观的感觉是,其命令应为如下形式:
实际情况是,这样得到的music.tar.gz其实只包含一个 MP3 文件 。原因是 find 命令 每次 发现一个音频文件,都会再执行一次-exec选项后面的压缩命令 。导致先前生成的压缩包被覆盖 。
可以先让 find 命令检索出所有符合条件的音频文件 , 再将得到的 文件列表 传递给后面的压缩命令 。完整的命令如下:
如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用-ls选项 。
例如:浏览所有 1G 以上大小的文件的详细信息
与exec作用相同 , 区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
与 exec 作用相同 , 起承接作用 。区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等
例1:查找以ap或may开头的文件
例2:查硬连接数大于2的文件或目录
例3:查找含特定字符串的文件 。查找当前目录下含有"the string you want find…"字符串的文件:
例4:从根目录开始查tmpfile,一旦查到马上删除
- mongodb查看数据库大小 查看mongodb集群容量
- 联合索引怎么创建 联合索引mongodb
- mongodb 查看数据库 mongodb查询数据库表
- mongodb导入bson mongodb导数据
- redis linux安装包 linux下redis包
- mongodb 创建表 mongodb创建数据库的语法
- mongo sql语句 mongodb写sql语句
- mongodb可靠性 mongodb一致性模型
- mongodb服务器启动失败 mongodb服务器配置要求
- mongodb入门教程 mongodb第三节怎么过
