(干货)如何使用batAnywhere查找文件?

(干货)如何使用batAnywhere查找文件?

问题描述

假设有名称的文件:

batman.c
debate.c
cricketbat.c

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

最佳答案使用 bat Anywhere 查找文件

要在 /path/to/folder 中的任何位置查找名称包含 bat 的所有文件程序开发,您可以使用:

文件名目录名或卷标语法不正确_目录或卷标语法不正确_cocos 文件名,目录名或卷标语法不正确

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

我有 搜索模式 *bat* 因为,如果省略引号并且文件与当前目录中的 *bat* 匹配,shell 会将 *bat* 扩展为它们的列表并将其传递给 find 。然后 find 将无法正常工作。 ( \*bat\* 和 "*bat*" 也可以。)

要在您当前所在的文件夹中搜索(例如,您已 cd 编辑到的文件夹),请像往常一样使用 . :

find . -name '*bat*'

要搜索整个计算机游戏开发素材,请使用 / 。要搜索您的主目录cocos 文件名,目录名或卷标语法不正确,请使用 ~ 或您的主目录的全名。 (shell 将 ~ 扩展为您的主目录的完全限定路径。)

目录或卷标语法不正确_cocos 文件名,目录名或卷标语法不正确_文件名目录名或卷标语法不正确

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

如果要搜索 大小写敏感ly,以便匹配包含 BAT 、 bAt 等的文件,请使用 -iname 测试而不是 -name 测试:

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

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

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

目录或卷标语法不正确_文件名目录名或卷标语法不正确_cocos 文件名,目录名或卷标语法不正确

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

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

-o 是 or 运算符。

仅匹配文件

要仅查找 – 而不是文件夹、符号链接和特殊设备节点 – 您可以使用 -type f 。这经常被推荐并且有时非常合适……但通常不是您真正想要的cocos 文件名,目录名或卷标语法不正确,特别是如果您正在运行 find 以自己检查输出。如果您有与您的搜索匹配的 a symbolic link,您不想知道吗?

目录或卷标语法不正确_cocos 文件名,目录名或卷标语法不正确_文件名目录名或卷标语法不正确

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

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

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

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

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

cocos 文件名,目录名或卷标语法不正确_文件名目录名或卷标语法不正确_目录或卷标语法不正确

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

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

获取详细输出

如果您不指定 find 的默认操作是 -print 。上面给出的所有命令都等同于它们自己,最后加上了 -print。

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

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

这以 multi-column 格式提供了每个文件的详细信息,类似于(尽管不完全相同)运行 ls file 所看到的内容。

文章来源:https://ubuntuqa.com/article/12720.html