Linux命令之find的用法

linux系统中,find命令是一种功能强大且灵活的工具,用于在文件系统中搜索文件和目录。该命令提供了多种查找条件,使得用户可以根据不同的属性来定位目标文件或目录。

find命令的基本格式为:find pathname -options [-print -exec -ok…]

其中,pathname指定了find命令开始搜索的路径。例如,/home/tools/tongyan。

以下是一些常用的选项及其功能:

  • -print:将匹配的文件输出到标准输出。
  • -exec:对匹配的文件执行指定的shell命令。命令格式为’command’ {} ;,其中{}表示find命令找到的文件名,;表示命令结束。
  • -ok:与-exec类似,但执行前会提示用户确认。

find命令的常用查找条件包括:

  • -name filename:按文件名查找。
  • -perm:按文件权限查找。
  • -user username:按文件所有者查找。
  • -group groupname:按文件所属组查找。
  • -mtime -n +n:按文件修改时间查找,-n表示n天以内,+n表示n天以前。
  • -atime -n +n:按文件访问时间查找。
  • -ctime -n +n:按文件创建时间查找。
  • -nogroup:查找无有效属组的文件。
  • -nouser:查找无有效属主的文件。
  • -newer f1 !f2:查找更改时间比f1新但比f2旧的文件。
  • -type b/d/c/p/l/f:按文件类型查找,分别表示块设备、目录、字符设备、管道、符号链接、普通文件。
  • -size n[c]:按文件大小查找,n表示块数或字节数。
  • -depth:在进入子目录前先搜索当前目录。
  • -fstype:查找位于特定文件系统类型的文件。
  • -mount:不跨越文件系统挂载点查找文件。
  • -follow:跟踪符号链接文件。
  • -cpio:将匹配的文件备份到磁带设备中。
  • -prune:忽略某个目录。

具体查找方式包括:

  • 按文件类型查找:find test1 -type d

    Linux命令之find的用法linux命令之find的用法_文件系统

  • 按文件名查找:find test1 -name test2

    Linux命令之find的用法Linux命令之find的用法_linux_02

  • 按文件属主查找:find test1 -user wangmengting

    Linux命令之find的用法Linux命令之find的用法_grep_03

  • 按文件所属组查找:find test1 -group wangmengting

    Linux命令之find的用法Linux命令之find的用法_修改时间_04

  • 按文件修改时间查找:find test1 -mtime -1

    Linux命令之find的用法Linux命令之find的用法_find_05

其他查找方式这里不再一一展示。

如果查找结果过多,可以使用以下方法进行显示:

  • -print:将匹配的文件输出到标准输出,例如find /home -type f -print。

此外,还可以对查找结果进行额外操作:

  • -exec:对匹配的文件执行额外操作,例如find /test1 -name “test2.txt” -exec rm {} ;。其中{}表示find找到的文件,;表示命令结束,是转义字符。

关于-mtime参数的使用:

  • -mtime n:查找文件修改时间距今为n天的文件。
  • -mtime -n:查找文件修改时间距今在n天以内的文件。
  • -mtime +n:查找文件修改时间距今在n天以前的文件。

例如:

  • -mtime 0:查找文件修改时间距今不到1天的文件。
  • -mtime 1:查找文件修改时间距今1天的文件。
  • -mtime +1:查找文件修改时间距今大于1天的文件,即2天以上的文件。
  • -mtime -1:查找文件修改时间距今小于1天的文件。

需要注意的是,-mtime +1查找的是修改时间距今超过2天的文件,因为n只能是整数,+1表示大于1天,即大于24小时,最接近的整数是2,所以实际上是查找48小时以外的文件。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享