Linux的find命令使用指南及实际shell用例

Linux的find命令使用指南及实际shell用例

  • 基本语法
  • 常用选项
  • 实际shell用例

find命令是Linux和UNIX系统中一个非常强大的工具,它用于在指定目录下根据给定条件搜索文件。find命令功能强大,使用灵活,可以组合多种条件和选项来精确查找文件,并对查找到的文件执行指定的操作。
在这里插入图片描述

基本语法

find命令的基本语法如下:

find [pathname] [options] [operands]
  • pathname:指定要查找的文件所在的目录。如果不指定,默认从当前目录开始。
  • options:指定查找的条件,如文件名、文件类型、大小、修改时间等。
  • operands:指定对查找到的文件执行的操作,如打印文件名、删除文件等。

常用选项

  1. 按名称查找

    • -name "字串":查找文件名匹配所给字串的所有文件,支持通配符*?[]
    • -iname "字串":忽略大小写地查找文件名匹配所给字串的所有文件。
    • -lname "字串":查找文件名匹配所给字串的所有符号链接文件。
  2. 按文件类型查找

    • -type x:查找类型为x的文件,x可以是以下字符之一:
      • b:块设备文件
      • c:字符设备文件
      • d:目录文件
      • p:命名管道(FIFO)
      • f:普通文件
      • l:符号链接文件
      • s:socket文件
  3. 按文件大小查找

    • -size n[bckw]:查找指定文件大小的文件,n后面的字符表示单位,缺省为b(512字节的块)。
  4. 按修改时间查找

    • -mtime n:查找n天以前被修改过的所有文件。
    • -amin n:查找n分钟以前被访问过的所有文件。
    • -cmin n:查找n分钟以前文件状态被修改过的所有文件。
    • -mmin n:查找n分钟以前文件内容被修改过的所有文件。
  5. 按文件权限查找

    • -perm 权限:查找具有指定权限的文件和目录,权限的表示可以如711,644。
  6. 按用户和组查找

    • -user '字串':查找属于用户名为所给字串的所有的文件。
    • -group '字串':查找属于用户组名为所给字串的所有的文件。
    • -uid n:查找属于ID号为n的用户的所有文件。
    • -gid n:查找属于ID号为n的用户组的所有文件。
  7. 按路径名查找

    • -path '字串':查找路径名匹配所给字串的所有文件,字串内可用通配符*?[]
  8. 其他常用选项

    • -empty:查找大小为0的目录或文件。
    • -print:将搜索结果输出到标准输出。
    • -exec command {} \;:对查找到的文件执行指定的shell命令。

实际shell用例

  1. 在当前目录及子目录下查找以.txt结尾的文件
find . -name "*.txt"
  1. 查找当前目录下大于1M的文件
find . -size +1M
  1. 查找当前目录下的普通文件
find . -type f
  1. 查找1天内修改过的文件
find . -mtime -1
  1. 查找权限为644的文件
find . -perm 644
  1. 查找属于特定用户的文件
find . -user username
  1. 组合多个条件查找
find . -size +500k -name "*.zip" -mtime -10
  1. 对查找到的文件执行删除操作
find . -name "*.tmp" -exec rm -f {} \;
  1. 查找并删除特定目录下的过期文件
find /path/to/search -name "*.tmp" -mtime +30 -exec rm {} \;
  1. 查找并压缩文件
find . -size +1M -exec gzip {} \;
  1. 查找并列出特定目录下的所有目录
find /path/to/search -type d
  1. 忽略特定目录进行查找
find . -path './src/emacs' -prune -o -print
  1. 按深度搜索
find . -maxdepth 1 -name "*sql"
  1. 查找并显示文件内容
find . -name 'main*' -exec more {} \;
  1. 查找隐藏文件
find $HOME -type f -name ".*"

通过组合不同的选项和表达式,find命令可以完成各种复杂的文件查找任务。在实际使用中,可以根据具体需求灵活运用这些选项来满足不同的查找需求。

上一篇:1. 路由定义


下一篇:深入理解 Kafka