命令是否仅通过搜索文件名称的一部分来查找文件?

命令是否仅通过搜索文件名称的一部分来查找文件?

假设有以下名称的文件:

batman.c
debate.c
cricketbat.c

我应该使用什么命令以及如何使用它来通过搜索标签列出所有这些文件bat

答案1

bat使用任意位置查找文件

要查找/path/to/folder名称包含 的所有文件bat,您可以使用:

find /path/to/folder -name '*bat*'

我有搜索模式,*bat*因为如果省略引号并且文件*bat*在当前目录中匹配,则 shell 将展开*bat*为它们的列表并传递find。则find无法正常工作。(\*bat\*并且"*bat*"也能工作。)

要在您当前所在的文件夹中搜索(例如,您已cd访问过的文件夹),请.照常使用:

find . -name '*bat*'

要搜索整个计算机,使用/。要搜索您的主目录,请使用~或您的主目录的全名。(外壳膨胀~到你的主目录的完整限定路径。)

根据姓名扩大或缩小搜索范围

如果您想要不区分大小写地搜索,以便匹配包含、等的文件BATbAt请使用测试-iname而不是测试-name

find /path/to/folder -iname '*bat*'

我注意到您的所有文件都以 结尾.c。如果您只想查找这样的文件,请使用:

find /path/to/folder -name '*bat*.c'

我注意到所有文件名bat都在后缀前面的部分的最开头或最结尾.c。如果要避免匹配类似这样的文件embattled.c,可以使用:

find /path/to/folder -name '*bat.c' -o -name 'bat*.c'

-o是个或者操作员。

仅匹配文件

仅查找常规文件--而不是文件夹、符号链接和特殊设备节点--您可以使用-type f。这通常是推荐的,有时也很合适……但是往往不是你真正想要的,特别是如果你是find为了亲自检查输出而运行。如果你有符号链接与您的搜索相符的搜索结果,您难道不想要了解它吗?

如果要查找常规文件和符号链接,可以使用:

find /path/to/folder -name '*bat*' \( -type f -o -type l \)

它使用-o运算符和括号进行分组(必须用引号引起来,以便 shell 不会特殊处理它们;否则会出现语法错误)。

但假设您只想查看最终指向常规文件的符号链接(而不是指向目录、设备节点等的符号链接)。这实际上更简单:使用-xtype而不是-type。如果您没有find使用-L标志运行,-xtype则在符号链接上测试链接指向的文件的类型。

find /path/to/folder -name '*bat*' -xtype f

如果你有一个指向另一个文件的符号链接,-xtype f则会匹配它,即使它的直接的目标是另一个符号链接,而不是常规文件。这几乎总是您想要的。

人们常常认为他们想要-type f,但实际上他们想要-xtype f

获取详细输出

find如果您未指定,则 的默认操作是-print。上面给出的所有命令都相当于-print在末尾添加 。

find通常用于根据找到的文件运行命令——通常是进行更改的命令。但除此之外,还有其他操作的目的是显示结果-print。特别有趣的是-ls

find /path/to/folder -name '*bat*' -ls

这将以多列格式提供每个文件的详细信息,类似于(但不完全相同)您通过运行所看到的内容。ls file

进一步阅读

有关find查找文件的更多信息和其他方法,请参阅:

答案2

最简单的方法是运行

locate bat

这样,您就可以在整个计算机中搜索文件名中包含“bat”的文件

要刷新电脑上的文件列表,请运行

updatedb

当您最近向帐户添加新文件时运行此命令

答案3

打开终端并将目录更改为您想要开始搜索的目录,然后运行以下命令:

find . -name "*bat*" -type f 

从当前目录启动.find 命令。
匹配-name字符串bat并区分大小写。(-iname不区分大小写)仅
搜索-type f文件。

答案4

您需要使用带有不区分大小写文件名匹配选项的find命令,或带有区分大小写文件名匹配选项的命令。这两个选项都允许您使用通配符名称。因此,要查找包含“bat”的任何文件名,您可以使用:-iname-name

find / -iname '*bat*'

或者

find / -name '*bat*'

表示*“任何字符”,因此搜索会查找bat任何字符,包括前面或后面的字符。/从根目录递归搜索,您可以使用.将从当前目录递归搜索,或使用要从中搜索的绝对路径。看看如何在 Linux Shell 脚本中使用正则表达式搜索文件

相关内容