首页 > 系统管理 > Linux命令行下搜索文件-Find命令使用介绍

Linux命令行下搜索文件-Find命令使用介绍

2007年12月26日

linux命令行下查找文件的可以用Find命令,Find功能强大,还可以何xargs配合起来。例如,我要找/home/logs目录下比7天之前修改的owner为nobody的文件:

find /home/logs -name access.log.* -mtime +7 -user nobody -maxdepth 1 -exec ls -l {} \;

查找比my-test文件新,比my-test2的文件旧的普通文件并删除,删除前提示确认:

find /home/logs -newer my-test ! -newer my-test2 -type f -ok rm {} \;

时间选项

-mtime -n +n
按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项类似:
-amin n
  查找系统中最后N分钟访问的文件
  -atime n
  查找系统中最后n*24小时访问的文件
  -cmin n
  查找系统中最后N分钟被改变文件状态的文件
  -ctime n
  查找系统中最后n*24小时被改变文件状态的文件
    -mmin n
  查找系统中最后N分钟被改变文件数据的文件
  -mtime n
  查找系统中最后n*24小时被改变文件数据的文件

EXEC, OK和xargs

使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便。exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个反斜杠\,最后是一个分号。为了使用exec选项,必要的话可同时使用print选项。

-ok和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

find /home/ -name *.gz -exec mv {} /data/archive/ \; 2> /dev/null

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去

在当前目录下的所有nobody组用户拥有的普通文件中查找"hostname"
# find . -type f -group nobody -print | xargs grep "hostname"
回收读写权限
# ls -l
drwxrwxrwx 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 httpd.conf
# find . -perm -7 -print | xargs chmod o-w
# ls -l
drwxrwxr-x 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf

本文参照了find的用法中文介绍,比较详细,还包含一定的例子。

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

系统管理

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

This blog is kept spam free by WP-SpamFree.