Unix在目录和子目录中查找文件命令

时间:2020-01-09 10:45:50  来源:igfitidea点击:

如何我在基于Unix的系统上丢失了(或者忘记了文件位置)名为toms-first-birthday.mp4的文件。
是否有Unix bash shell命令在目录和子目录中找到名为toms-first-birthday.mp4的文件?
您需要在Linux或者类Unix系统上使用find命令在目录中搜索文件。

语法

语法是

find /search/directory/ -name "matching file search criteria" -actions
find /dir/to/search -name "pattern" -print
find /dir/to/search -name "file-to-search" -print
find /dir/to/search -name "file-to-search" -print [-action]

find命令将开始在/dir/to/search /中查找并继续搜索所有可访问的子目录。
文件名通常由-name选项指定。
您也可以使用其他匹配条件:

  • -name文件名搜索给定的文件名。您可以使用* .c之类的模式
  • -iname文件名与-name类似,但是不区分大小写。例如,模式fo*和F。匹配文件名FooFOOfoofOo等。模式* foo *也将匹配名为.foobar的文件。
  • -user userName文件所有者是userName
  • -group groupName文件组所有者是groupName
  • -type N按文件类型搜索。 N可以是以下任意一个:
  • b:块(缓冲)特殊
  • c:字符(无缓冲)特殊
  • d:目录
  • p:命名管道(FIFO)
  • f:常规文件
  • l:符号链接;如果-L选项或者-follow选项有效,则永远不会如此,除非符号链接断开。如果要在-L生效时搜索符号链接,请使用-xtype。
  • s:插座
  • D:门(Solaris Unix)

默认条件是在符合条件时显示文件名。
找到文件时,可以指定以下操作:

  • -print:显示匹配文件的路径名。
  • -exec cmd {} +:在文件上运行命令cmd。
  • -ls:在屏幕上以ls -dils格式列出当前文件。
  • -delete:删除文件。

Unix find命令示例

要在HONE目录中查找并报告toms-first-birthday.mp4文件,请执行:

$ find $HOME -name "toms-first-birthday.mp4" -print

要查找和报告从/home/Hyman /目录开始的所有mp4文件,请执行:

$ find /home/Hyman/ -name "*.mp4" -print

要查找和报告从/home/Hyman /和/tmp /目录开始的所有mp4文件,请执行:

$ find /home/Hyman/ /tmp/ -name "*.mp4" -print

有关更多信息,请参见Unix find命令手册页:

$ man find

关于Linux/Unix上的locate命令的说明

要使用名称查找文件,请使用locate命令:

locate file-name
locate pattern
locate [option] pattern
locate toms-first-birthday.mp4 | more
locate -b '\toms-first-birthday.mp4'
locate *.sh | more