2024年11月Linux中如何巧妙运用find命令(2)

发布时间:

  ⑴、根据文件时间进行搜索

  ⑵Linux文件系统中每一个文件都有三种时间戳

  ⑶访问时间(-atime:用户最近一次访问文件的时间;

  ⑷修改时间(-mtime:文件内容最后一次被修改的时间。

  ⑸变化时间(-ctime:文件元数据(metadata,例如权限或所有权最后一次改变的时间。

  ⑹-atime,-mtime,-ctime作为时间参数,单位是天,可以使用+表示大于,-表示小于。

  ⑺[rootlocalhost ~]# find 。 -type f -atime

  ⑻#打印出正好在天前被访问过的文件

  ⑼[rootlocalhost ~]# find 。 -type f -mtime +

  ⑽#打印修改时间大于天的文件

  ⑾[rootlocalhost ~]# find 。 -type f -ctime -

  ⑿#打印出修改时间小于天的文件

  ⒀类似的参数还有,-amin(访问时间,-mmin(修改时间,-cmin(变化时间,以分钟为单位。

  ⒁find另一个漂亮的特性是-newer参数,我们可以指定一个用于比较时间戳的参数文件,然后找出比参数文件更新的所有文件。

  ⒂find 。 –type f –newer file.txt

  ⒃p 在当前目录找出比file.txt修改时间更长的所有文件。

  ⒄、基于文件大小的搜索

  ⒅搜索可以使用的单位

  ⒆b——块(字节; c——字节; w——字(字节;

  ⒇k——千字节 ; M——兆字节; G——吉字节。

  ⒈[rootlocalhost tmp]# find 。 -type f -size k

  ⒉[rootlocalhost tmp]# find 。 -type f -size +k

  ⒊[rootlocalhost tmp]# find 。 -type f -size -k

  ⒋、删除匹配的文件

  ⒌-delete可以用来删除find查找到的匹配文件。

  ⒍[rootlocalhost tmp]# find 。 -type f -name “.sWp” –delete

  ⒎#删除当前目录下所有的.swp文件

  ⒏、基于文件权限和所有权的匹配

  ⒐[rootlocalhost tmp]# find 。 -type f -perm

  ⒑#查找当前目录权限为的文件

  ⒒[rootlocalhost tmp]# find 。 -type f -user reed

  ⒓#查找当前目录文件所有者为reed的文件

  ⒔、结合find 执行命令或动作

  ⒕find命令可以借助选项-exec与其他命令进行结合。

  ⒖[rootlocalhost tmp]# find 。 -type f -user reed -exec chown cathy {} ;

  ⒗#将当前目录文件拥有者为reed的文件改为cathy

  ⒘{ }是一个特殊的字符串,对于每一个匹配的文件,{ }会被替换成相应的文件名。

  ⒙[rootlocalhost test]# find 。 -type f -mtime + -name “*.log” -exec cp {} /data/bk_log ;

  ⒚#将当前目录大于天的log文件复制到/data/bk_log目录

  ⒛[rootlocalhost test]# find /tmp/test/ -type f -name “*.txt” -exec printf “Text file: %s

  ①Text file: /tmp/test/File__.txt

  ②Text file: /tmp/test/file__.txt

  ③Text file: /tmp/test/data__.txt

  ④Text file: /tmp/test/data__.txt

  ⑤#列出目录的所有txt文件

  ⑥、跳过指定的目录

  ⑦有时间我们查找时需要跳过一些子目录

  ⑧[rootlocalhost test]# find 。 ( -name “jump_dir” -prune -o ( -type f -print

  ⑨# ( -name “jump_dir” -prune 指定要跳过的子目录的名字

  ⑩上面就是Linux中巧妙运用find命令的方法介绍了,只要合理运用find命令,就能达到意想不到的效果,在使用Linux命令时,我们不仅要会用,还有学会怎么用,你记住了吗?