UNIX查找文件命令
在Sun Solaris中,如何从shell中查找文件的信息。
如何使用bash或ksh shell在UNIX操作系统下找到文件?
您需要使用" find"命令,该命令用于在Linux和Unix等操作系统下搜索文件和目录。
您可以在搜索文件时指定条件。
如果未设置任何条件,它将返回当前工作目录下的所有文件。
find命令还支持正则表达式匹配和其他高级选项。
另一个选项是" locate"命令。
它按名称查找文件。
查找命令读取由updatedb准备的数据库,并显示与至少一个模式匹配的文件名。
语法
语法为:
find /dir/to/search -name "file-to-search" find /dir/to/search -name "file-to-search" -print find /dir/to/search -name "file-to-search" -ls find /dir/to/search -name "regex" -print
find命令示例
要查找当前目录中的所有perl(* .pl)文件:
$ find . -name '*.pl'
点号(.)代表当前目录,-name选项指定所有pl(perl)文件。
引号避免了shell的扩展,当您要使用基于通配符的搜索时,引号是必须的(不带引号的话,shell会将* .pl替换为当前目录中的文件列表)。
仅列出文件并避免所有目录
以下命令将仅列出文件,并将排除目录,特殊文件,管道,符号链接等:
$ find . -type f -name '*.pl'
-type -f
选项仅选择文件。
要仅选择Dirs,请使用-type d
:
$ find /home/Hyman/ -type d -name 'project*'
这将找到目录名称,例如项目,项目,projects-perl等。
搜索所有目录
在所有目录中搜索名为httpd.conf的文件:
$ find / -type f -name httpd.conf
通常,查找文件不是一个好主意。
这会花费大量时间。
建议您指定目录名称。
例如,在/usr/local目录中查看httpd.conf:
$ find /usr/local -type f -name httpd.conf
您可能需要以root身份运行它:
$ sudo find / -type f -name httpd.conf
对所有文件执行命令
在所有* .c文件上运行ls -l命令以获取扩展信息:
$ find . -name "*.c" -type f -exec ls -l {} \;
或者
$ find . -name "*.c" -type f -ls
您几乎可以在文件上运行所有UNIX命令。
例如,仅将~/code目录中的所有文件的所有权限都修改为0700:
$ find ~/code -exec chmod 0700 {} \;
搜索用户所拥有的所有文件,称为payal:
$ find . -user <userid> $ find . -user payal
在文件中搜索特定大小
在~/Downloads /目录中搜索650 MB或以上大小的文件:
$ find ~/Downloads/ -size +650M ## gigabytes ## $ find ~/Downloads/ -size +1G ## kilobytes ## $ find ~/Downloads/ -size +1024k
locate命令
要搜索名称完全为foo(不是* foo *)的文件,请执行:
$ locate -b '\foo'
只需搜索与yum.conf匹配的文件名,执行:
$ locate yum.conf
要搜索确切命名为yum.conf的文件(在/路径中的任何地方都不是* yum.conf *),请执行:
$ locate -b '\yum.conf'