srk*_*_cb 43 command-line files search find
假设有名称的文件:
batman.c
debate.c
cricketbat.c
Run Code Online (Sandbox Code Playgroud)
什么命令以及我应该如何使用它来使用 searchtag 列出所有这些文件bat?
Eli*_*gan 66
bat随时随地查找文件要查找/path/to/folder其中名称包含 的所有文件bat,您可以使用:
find /path/to/folder -name '*bat*'
Run Code Online (Sandbox Code Playgroud)
我已经引述了搜索模式*bat*,因为如果报价被省略和文件匹配*bat*在当前目录中,外壳将扩大*bat*到它们的列表,并通过该给find。然后find就行不通了。(\*bat\*和"*bat*"也行。)
要在您当前所在的文件夹中搜索(例如,您访问过的文件夹cd).,请像往常一样使用:
find . -name '*bat*'
Run Code Online (Sandbox Code Playgroud)
要搜索整个计算机,请使用/。要搜索您的主目录,请使用~或您的主目录的全名。(外壳扩展~到您的主目录的完全限定路径。)
如果要不区分大小写搜索,以便匹配包含BAT、bAt等的文件,请使用-iname测试而不是-name测试:
find /path/to/folder -iname '*bat*'
Run Code Online (Sandbox Code Playgroud)
我注意到你所有的文件都以.c. 如果您只想找到这样的文件,请使用:
find /path/to/folder -name '*bat*.c'
Run Code Online (Sandbox Code Playgroud)
我注意到您的所有文件名都bat在.c后缀之前部分的开头或结尾。如果您想避免匹配文件,例如embattled.c,您可以使用:
find /path/to/folder -name '*bat.c' -o -name 'bat*.c'
Run Code Online (Sandbox Code Playgroud)
-o是or运算符。
要仅查找常规文件——而不是文件夹、符号链接和特殊设备节点——您可以使用-type f. 这经常被推荐,有时非常合适......但通常不是你真正想要的,特别是如果你find为了自己检查输出而运行。如果您有一个与您的搜索匹配的符号链接,您是否不想了解它?
如果要同时查找常规文件和符号链接,可以使用:
find /path/to/folder -name '*bat*' \( -type f -o -type l \)
Run Code Online (Sandbox Code Playgroud)
它使用-o运算符和括号进行分组(必须用引号引起来,以便 shell 不会对它们进行特殊处理;否则会出现语法错误)。
但是假设您只想查看最终指向常规文件的符号链接(而不是指向目录、设备节点等的符号链接)。这实际上更简单:使用-xtype代替-type. 如果您没有find使用-L标志运行,则-xtype在符号链接上测试链接指向的文件的类型。
find /path/to/folder -name '*bat*' -xtype f
Run Code Online (Sandbox Code Playgroud)
如果您有指向文件的另一个符号链接的符号链接,-xtype f即使其直接目标是另一个符号链接而不是常规文件,也会匹配它。这几乎总是你想要的。
通常人们认为他们想要-type f,但实际上他们想要-xtype f。
find如果您未指定,则默认操作是-print。上面给出的所有命令都等价于自己,-print并在最后加上了。
find通常用于根据找到的文件运行命令——通常是进行更改的命令。但是除了-print. 特别感兴趣的是-ls:
find /path/to/folder -name '*bat*' -ls
Run Code Online (Sandbox Code Playgroud)
这以多列格式提供了每个文件的详细信息,类似于(虽然不完全相同)您通过运行.ls file
有关find查找文件的更多信息和其他方法,请参阅:
find手册页,访问在线或通过运行man find在终端。find,locate以及xargs实用程序。Mar*_*rby 17
最简单的方法是运行
locate bat
Run Code Online (Sandbox Code Playgroud)
这样您就可以在整个计算机中搜索文件名中包含“bat”的文件
要刷新 PC 上的文件列表,请运行
updatedb
Run Code Online (Sandbox Code Playgroud)
当您最近将新文件添加到您的帐户时运行此命令
kar*_*rel 15
打开终端并将目录更改为要开始搜索的目录,然后运行以下命令:
find . -name "*bat*" -type f
Run Code Online (Sandbox Code Playgroud)
在.开始从当前目录find命令。
该-name字符串匹配bat,并且区分大小写。(-iname不区分大小写)
的-type f仅用于文件搜索。
如果文件在当前目录中,请使用:
$ ls *bat*
batgirl.c batman.c batwoman.c cricketbat.c
Run Code Online (Sandbox Code Playgroud)
或者(让它们一行一行):
$ ls -1 *bat*
batgirl.c
batman.c
batwoman.c
cricketbat.c
Run Code Online (Sandbox Code Playgroud)
如果要在系统中搜索该文件,请使用:
$ find / -name "*bat*"
/path/to/cricketbat.c
/path/to/batgirl.c
/path/to/batwoman.c
/path/to/batman.c
Run Code Online (Sandbox Code Playgroud)
您想要使用find带有-iname不区分大小写文件名匹配选项或-name区分大小写文件名匹配选项的命令。这两个都允许您使用通配符名称。因此,要查找包含“bat”的任何文件名,您可以使用:
find / -iname '*bat*'
Run Code Online (Sandbox Code Playgroud)
或者
find / -name '*bat*'
Run Code Online (Sandbox Code Playgroud)
这*意味着“任何字符”,因此搜索正在查找bat其之前或之后的任何字符,包括没有字符。/从根目录递归搜索,您可以使用which.将从当前目录或要搜索的绝对路径开始递归搜索。看看如何在linux shell脚本中使用正则表达式搜索文件
| 归档时间: |
|
| 查看次数: |
125632 次 |
| 最近记录: |