博客
关于我
Linux文件查找命令find,xargs详述【转】
阅读量:798 次
发布时间:2023-02-04

本文共 2405 字,大约阅读时间需要 8 分钟。

Linux文件查找命令find与xargs详述

一、find命令格式与选项

find命令是Linux系统中常用的一款强大文件查找工具,其命令格式如下:

find pathname -options [ -print | -exec | -ok ... ]

find命令的参数说明:

  • pathname:指定要查找的目录路径,支持使用.表示当前目录,/表示系统根目录。
  • -print:将匹配的文件输出到标准输出。
  • -exec:执行指定的shell命令,格式为command { } /;,注意空格和分号的使用。
  • -ok:与-exec类似,但更安全,执行前会提示用户确认。

常用选项:

  • -name:按文件名查找文件,如-name "*.txt"匹配所有文本文件。
  • -perm:按文件权限查找文件,格式为八进制表示,如-perm 755匹配权限为755的文件。
  • -prune:忽略当前目录中的文件,仅在子目录中查找。
  • -user:按文件属主查找文件,结合-nouser可查找无效属主文件。
  • -group:按文件所属组查找文件,结合-nogroup可查找无效组文件。
  • -mtime:按文件更改时间查找文件,支持-5(最近5天)或+5(5天以前)。
  • -size:按文件大小查找文件,格式为-size Nc-size Nc表示以字节计。
  • -type:按文件类型查找文件,如-type d匹配目录,-type f匹配文件。
  • -depth:限制查找深度,结合-prune可排除指定目录。
  • -mount:忽略文件系统的挂载点,仅查找当前文件系统中的文件。

二、find命令的实际应用示例

1. 查找当前用户主目录下的所有文件:

$ find $HOME -print

2. 查找特定权限的文件并列出详细信息:

$ find . -perm 644 -exec ls -l { } /

3. 查找系统中所有长度为0的普通文件:

$ find / -type f -size 0 -exec ls -l { } /

4. 在/var/logs目录中查找更改时间在7日以前的文件并删除:

$ find /var/logs -type f -mtime +7 -ok rm { } /

5. 查找属于root组的文件:

$ find . -group root -exec ls -l { } /

6. 查找名为admin.log*且更改时间在7日以内的文件并删除:

$ find . -name "admin.log*" -atime -7 -ok rm { } /

7. 查找当前文件系统中的所有目录并排序:

$ find . -type d | sort

8. 查找系统中所有的rmt磁带设备:

$ find /dev/rmt -print

三、xargs命令的使用

xargs命令是find命令与-exec选项结合使用时的替代方案,主要用于处理find命令输出过长的问题。与-exec相比,xargs命令更适合大文件量的处理。以下是xargs命令的常用示例:

1. 在当前目录下查找所有以.log结尾的文件并列出详细信息:

$ find . -name "*.log" -print | xargs ls -l

2. 在根目录下查找核心文件并写入日志文件:

$ find / -name "core" -print | xargs echo "" > /tmp/core.log

3. 在当前目录下查找所有文件名以file*结尾的文件并删除:

$ find . -name "file*" -print | xargs rm

4. 在当前目录下查找所有用户具有读、写和执行权限的文件并修改权限:

$ find . -perm -7 -print | xargs chmod o-w

5. 在当前目录下查找所有普通文件并搜索hostname关键字:

$ find . -type f -print | xargs grep "hostname"

四、find命令的其他实用技巧

1. 忽略某个特定目录:

$ find /apps -path "/apps/bin" -prune -o -print

2. 避开多个文件夹:

$ find /usr/sam \[ -path /usr/sam/dir1 -o -path /usr/sam/file1 \] -prune -o -print

3. 查找无有效属主或所属组的文件:

$ find / -nouser -print$ find / -nogroup -print

4. 按更改时间或访问时间查找文件:

$ find / -mtime -5 -print$ find /var/adm -mtime +3 -print

5. 查找比某个文件新或旧的文件:

$ find -newer file1 ! file2$ find . -newer temp -print

6. 按文件类型查找目录或符号链接文件:

$ find /etc -type d -print$ find /etc -type l -print

7. 按文件大小查找文件:

$ find . -size +1000000c -print$ find /home/apache -size 100c -print$ find . -size +10 -print

8. 按深度限制查找文件:

$ find / -name "CON.FILE" -depth -print

9. 忽略文件系统的挂载点:

$ find . -mount -name "*.XC" -print

五、关于本文

本文是zhyfly兄贴在LinuxSir.Org的一个帖子而整理出来的。如果您对版权有疑问,请在本帖后面跟帖。谢谢!

转载地址:http://ickfk.baihongyu.com/

你可能感兴趣的文章
mysql中null和空字符串的区别与问题!
查看>>
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>
Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
查看>>
MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
查看>>
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>
Mysql中存储引擎简介、修改、查询、选择
查看>>
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>
Mysql中常用函数的使用示例
查看>>