Linux find命令
时间:2019-11-20 08:53:36 来源:igfitidea点击:
如何在Linux和Unix服务器上搜索文件?
在Linux中,如何查找文件?
find命令用于在Linux或Unix系统上查找文件。它将在您指定的目录中搜索与提供的搜索条件匹配的文件。搜索条件可以按名称,所有者,组,类型,权限,日期,时间,大小写和其他条件搜索文件。
find命令是递归搜索的,即将搜索所有的子目录。
find 命令语法
find {dir-name} -name {file-name} action
或者
find where-to-look criteria action
action是找到文件后进行的操作,默认是打印文件名:
find /dir/ -name "file-to-search" -print
find命令示例
在根目录查找名为foo.txt的文件或者目录:
# find / -name foo.txt
使用-type f指定只查找文件。如果是-type d,则表示值查找目录
# find / -type f -name httpd.log
在/var/www目录中找到httpd.log文件:
# find /var/www/ -type f -name httpd.log
查找时不区分大小写:
# find /var/www/ -type f -iname httpd.log
使用星号表示任意匹配:
# find /var/www/ -type f -iname "*.php" -print
反向查找
使用-not
或者 !
表示反向查找。即找出匹配默认之外的所有文件。
例如,找出不是c文件的所有文件。
# find /dir/to/search/ -not -name "*.c" -print # find $HOME -not -iname "*.c" -print
或者
# find /dir/to/search/ \! -name "*.c" print # find $HOME \! -iname "*.c" print
根据类型查找文件
语法如下:
find /dir/to/search/ -type X -name "file_pattern" -print find $HOME -type X -iname "file_pattern" -print
其中 " -type X" 指定搜索类型:
- f:仅搜索普通文件。
- d:仅搜索目录。
- l:仅搜索符号链接
在Linux中,根据内容查找文本文件?
使用grep命令,如下所示:
grep 'string' *.txt grep -R 'string' *.txt
在/etc中搜索所有包含 192.168.1.100字符串的文件
# find /etc/ -iname "*" | xargs grep '192.168.1.100'
在文件上执行命令
在find命令中,可以指定在找到文件之后要进行的操作。
语法为:
find /dir/to/search [options] -name "file_pattern" -exec command-name1 {} \; find /dir/to/search [options] -iname "file_pattern" -exec command-name1 {} \; find /dir/to/search type f -iname "file_pattern" -exec command-name1 -arg1 {} \;
例如,将所有的php文件权限改成740:
# find /var/www/ -type f -iname "*.php" -exec chmod 740 {} \;
根据文件所属组和用户进行搜索
搜索属于用户nginx的 文件:
# find / -user nginx -print
搜索属于apache组的文件
# find / -group apache -print