如何在Linux和Unix服务器上搜索文件?
如何在Linux机器上搜索文件?
如何使用bash命令行在基于Linux的系统上找到文件?
解决方法:您需要使用find命令或locate命令在Linux或类似Unix的服务器上搜索文件。
find命令
find命令用于在Linux或Unix之类的系统上查找文件。
它将在您指定的目录中搜索与提供的搜索条件匹配的文件。
搜索条件可用于按名称,所有者,组,类型,权限,日期,时间,大小写和其他条件搜索文件。
搜索是递归的,即它将搜索所有子目录。
find {dir-name} -name {file-name} action
或者
find where-to-look criteria action
默认操作是打印文件名:
find /dir/ -name "file-to-search" -print
查找命令示例
要在整个服务器中查找名为foo.txt的文件,请执行:
# find / -name foo.txt
找出httpd.log文件:
# find / -type f -name httpd.log
要在/home/web-server /目录中找到httpd.log文件,请执行:
# find /home/web-server/ -type f -name httpd.log
要在/home/web-server /目录中查找不带大小写的httpd.log文件,即不区分大小写,例如httpd.log,HTTPD.LOG,HTTpd.LOG,请执行:
# find /home/web-server/ -type f -iname httpd.log
要查找/var/www /目录中的所有php文件(* .php),请执行:
# find /var/www/ -type f -iname "*.php" -print
在名为~/projects /?的目录中查找* .c以外的所有文件。
要查找除特定模式以外的所有文件,即以--not或!
反转搜索。
# 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:仅搜索符号链接
要在/var/www /中搜索所有* .pl(perl)文件,请输入以下内容:
find /var/www/ -type f -name "*.pl" -print ## OR case insensitive search ### find /var/www/ -type f -iname "*.pl" -print
如何在基于Linux或UNIX的服务器上按内容查找文件?
使用grep命令,如下所示:
grep 'string' *.txt grep -R 'string' *.txt
在/etc /目录中搜索所有文件,仅显示IP地址为192.168.1.5的文件:
# find /etc/ -iname "*" | xargs grep '192.168.1.5'
有关更多信息,请参见如何在UNIX和Linux下按内容查找文件。
在文件上执行命令
您可以在使用find命令定位的文件上运行任何命令(例如rm或cp)。
语法为:
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 {} \;
在此示例中,使用chmod命令将所有* .php文件设置为0644的权限:
# find /var/www/ -type f -iname "*.php" -exec chmod 700 {} \;
按所有者或组查找文件
要查找www用户拥有的所有文件,请执行:
# find / -user www -print
要查找lighttpd组拥有的所有文件,请执行:
# find / -group lighttpd -print