Linux 命令 - find: 搜索文件

find 命令可以依据文件的各种属性在既定的目录(及其子目录)里搜索文件。

命令格式

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

命令参数

test 项

-cmin n
  匹配 n 分钟前改变状态(内容或属性)的文件或目录。如果不到 n 分钟,就用 -n,如果超过 n 分钟,就用 +n。

-cnewer file
  匹配内容或属性的修改时间比文件 file 更晚的文件或目录。

-ctime n
  匹配系统中 n*24 小时前文件状态改变(内容、属性、访问权限等)的文件或目录。

-empty
  匹配空文件及空目录。

-group name
  匹配属于 name 组的文件或目录,name 可以描述为组名或改组的 ID。

-iname pattern
  与 -name 选项功能类似只是不区分大小写。

-inum n
  匹配索引节点是 n 的文件。该 test 选项有助于查找某个特定索引节点上的所有硬链接。

-mmin n
  匹配 n 分钟前内容被修改的文件或目录。

-mtime n
  匹配 n*24 小时前只有内容被更改的文件或目录。

-name pattern
  匹配有特定通配符模式的文件或目录

-newer file
  匹配内容的修改时间比 file 文件更近的文件或目录。这在编写 shell 脚本进行文件备份的时候非常有用。每次创建备份时,更新某个文件(比如日志),然后用 find + 此参数选项来确定上一次更新后哪些文件改变了。

-nouser
  匹配不属于有效用户的文件或目录。该 test 选项可以用来查找那些属于已删除账号的文件,也可以用来检测攻击者的活动。

-nogroup
  匹配不属于有效组的文件或目录

-perm mode
  寻找访问权限与既定模式匹配的文件或目录。既定模式可以以八进制或符合的形式表示。

-samefile name
  与 -inum 选项类似。匹配与 file 文件用索引编号相同的的文件。

-size n
  匹配大小为 n 的文件。+n 表示大于 n,-n 表示小于 n。find 支持的计量单位有 b(表示 512 字节的块,默认单位)、c(字节)、w(两个字节的字)、k(KB)、M(MB)和 G(GB)。

-type c
  匹配指定类型的文件。find 支持的文件类型有 b(块设备文件)、c(字符设备文件)、d(目录)、f(普通文件)和 l(符号链接)。

-user name
  匹配属于 name 用户的文件或目录。name 可以描述为用户名或该用户的 ID。

action 项

-delete
  删除匹配文件。

-ls
  对匹配文件执行 ls 操作,以标准格式输出其文件名及所要求的其他信息。

-print
  将匹配的文件的全部路径以标准形式输出。当没有指定任何具体操作是,该操作是默认操作。

-quit
  一旦匹配成功便退出。

-exec command {} ;
  自定义操作,command 表示要执行的操作命令名,{} 花括号表示当前路径,而分号作为必需的分隔符表示命令结束。

option 项

-depth
  引导 find 程序处理目录前先处理目录内文件。当指定 -delete 操作时,该参数选项会自动调用。

-maxdepth levels
  当执行测试条件行为时,设置 find 程序陷入目录数的最大级别数。

-mindepth levels
  在应用测试条件和行为时,设置 find 程序陷入目录数的最小级别数。

-mount
  引导 find 不去遍历挂载在其他文件系统上的目录。

-noleaf
  指导 find 程序不要基于 “正在搜索类 UNIX 文件系统” 的假设来优化它的搜索。当扫描 DOS/Windows 文件系统和 CD 时,会用到该选项。

实例

a) 列出目录 ~/redis/redis-3.0.4/utils/ 所有的文件列表清单。

[[email protected] ~]$ find ~/redis/redis-3.0.4/utils/
/home/huey/redis/redis-3.0.4/utils/
/home/huey/redis/redis-3.0.4/utils/cluster_fail_time.tcl
/home/huey/redis/redis-3.0.4/utils/redis_init_script
/home/huey/redis/redis-3.0.4/utils/mkrelease.sh
...

b) 查找目录 ~/redis/redis-3.0.4/utils/ 的所有目录。

[[email protected] ~]$ find ~/redis/redis-3.0.4/utils/ -type d
/home/huey/redis/redis-3.0.4/utils/
/home/huey/redis/redis-3.0.4/utils/hyperloglog
/home/huey/redis/redis-3.0.4/utils/create-cluster
/home/huey/redis/redis-3.0.4/utils/lru

c) 查找目录 ~/redis/redis-3.0.4/utils/ 下所有以 .sh 为后缀且大于 1KB 的普通文件。

[[email protected] ~]$ find ~/redis/redis-3.0.4/utils/ -type f -name "*.sh" -size +1k
/home/huey/redis/redis-3.0.4/utils/install_server.sh

d) 查找目录 ~/redis/redis-3.0.4/src/ 下模式为 0775 或 0755 的文件(注意命令行的空格)。

[[email protected] ~]$ find ~/redis/redis-3.0.4/src/ \( -type f -perm 0775 \) -or \( -type f -perm 0755 \)
/home/huey/redis/redis-3.0.4/src/redis-benchmark
/home/huey/redis/redis-3.0.4/src/mkreleasehdr.sh
/home/huey/redis/redis-3.0.4/src/redis-check-dump
/home/huey/redis/redis-3.0.4/src/redis-check-aof
/home/huey/redis/redis-3.0.4/src/redis-server
/home/huey/redis/redis-3.0.4/src/redis-sentinel
/home/huey/redis/redis-3.0.4/src/redis-trib.rb
/home/huey/redis/redis-3.0.4/src/redis-cli

e) 对匹配文件执行 ls 操作。

[[email protected] ~]$ find ~/redis/redis-3.0.4/src/ -type f -perm 0755 -ls
919417 6316 -rwxr-xr-x   1 huey      huey       6466357 Sep 26 13:20 /home/huey/redis/redis-3.0.4/src/redis-sentinel

f) 删除匹配文件。

[[email protected] ~]$ find ~/redis/redis-3.0.4/src/ -type f -perm 0755 -delete

g) 对匹配文件自定义操作,将匹配的文件拷贝至指定的目录。

[[email protected] ~]$ mkdir ~/tmpdir
[[email protected] ~]$ find ~/redis/redis-3.0.4/src/ -type f -perm 0755 -exec cp ‘{}‘ ~/tmpdir ‘;‘
[[email protected] ~]$ ll ~/tmpdir/
total 6316
-rwxr-xr-x 1 huey huey 6466357 Oct 16 10:04 redis-sentinel
时间: 2024-12-29 21:51:49

Linux 命令 - find: 搜索文件的相关文章

Linux命令大全----常用文件操作命令

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了Linux命令大全----常用文件操作命令,并附有实例 ls 这个命令是经常用到的,用来显示当前目录下有哪些文件 ,ls最常用的参数有三个: -a -l -F.ls -a说明:Linux上的文件以"."开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示 一般文件名外,连隐藏文件也会显示出来. ls -l(这个参数是字母L的小写,不是数

Linux命令详解--文件与目录查找

一·文件搜索 which:用来查找命令的绝对路径-- 显示shell命令的绝对路径-- 仅仅会在PATH变量中搜索要查找的命令-- 搜索时先查找别名,然后从PATH中查找1.查看用户的PATH变量:命令的搜索路径# echo $PATH/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin command not found可能原因:1)敲错了2)命令没有安装3)命令

分布式进阶 十 linux命令行下载文件以及常用工具 wget Prozilla MyGet Linuxdown Cu

linux命令行下载文件以及常用工具:wget.Prozilla.MyGet.Linuxdown.Curl.Axel 本文介绍常用的几种命令行式的下载工具:wget.Prozilla.MyGet.Linuxdown.Curl.Axel 下面就为大家详细介绍一下这些工具. 1. Wget Wget是一个十分常用命令行下载工具,多数Linux发行版本都默认包含这个工具.如果没有安装可在http://www.gnu.org/software/wget/wget.html 下载最新版本. 1.1 编译安

Linux命令简介(文件/目录权限操作命令)

文件/目录权限 文件/目录的属性 1.权限 读取.写入.可执行 2.归属 属主.属组 注意:root用户是系统的超级用户,拥有完全的管理权限,所以目录的权限限制对root用户将不起作用.它只是针对普通用户来说的. 权限字符表示 权限      文件                目录 r         查看文件内容        查看目录内容(显示子目录.文件列表) w         修改文件内容        修改目录内容(在目录中新建.移动.删除文件或子目录) x         执行该

Linux命令之大文件切分与合并

当面临将一个大文件进行切分时,linux的split命令是很好的选择.它包含多种参数,支持按行.大小进行切分. split命令的语法如下: split [--help][--version][-a ][-b][-C ][-l ][要切割的文件][输出文件名前缀] 对应的参数描述如下: -a, --suffix-length=N 使用的后缀长度 (默认为 2) -b, --bytes=SIZE 每个输出文件的字节大小 -C, --line-bytes=SIZE 每个输出文件每行的最大字节大小 -d

Linux 命令安装bin文件

Linux 命令安装bin文件 安装命令: //1,增加文件的可执行权限 chmod a+x jdk-6u30-linux-x64.bin //2,程序即安装在执行命令的文件夹下 ./jdk-6u30-linux-x64.bin 原文地址:https://www.cnblogs.com/lizm166/p/9717583.html

Linux命令-重命名文件和文件夹(mv)

linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹. 例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c mv /a /b/c

linux命令:grub 文件详解及grub修复,系统常见故障修复

 首先模拟grub损坏,dd if=/dev/zero of=/dev/sda count=1 bs=400   grub引导破坏,但是此时并未重启,可以直接重新安装grub,从而达到恢复grub:   第一种方法:   1.首先输入grub 进入grub命令行 [[email protected] networking]# grub Probing devices to guess BIOS drives. This may take a long time. GNU GRUB  versio

Linux命令-自动挂载文件/etc/fstab功能详解[转]

一./etc/fstab文件的作用 磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载. 系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘.这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了. 二.挂载的限制 在说明这个文件的作用之前我想先强调一下挂载的限制. 1.根目录是必须挂载的,而且一定要先于其他mount point被挂载.因为mount是所有目录的跟目录,其他木