UNIX查找文件命令

时间:2020-01-09 10:40:13  来源:igfitidea点击:

在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'