Linux使用给定的字符串查找文件名

JJ *_*eck 97 linux string find

我在Ubuntu上,我想查找当前目录中的所有文件以及名称中包含字符串"John"的子目录.我知道grep可以匹配文件中的内容,但我不知道如何将它与文件名一起使用.任何帮助,将不胜感激.

Ric*_*ams 179

使用find命令,

find . -type f -name "*John*"
Run Code Online (Sandbox Code Playgroud)

  • 使用 `#!/bin/bash if [ -z $1 ] 创建自定义 bash 脚本;然后回显“错误:指定搜索模式”;否则 /usr/bin/find 。-type f -name "*$1*"; fi ` 会让你只运行 `F search-string` 作为一个完美的快捷方式 (2认同)

tin*_*ink 22

已经提供了正确的答案,但是为了让你学习如何帮助自己,我想我会以不同的方式投入一些有用的东西; 如果你能用一个词来概括你想要实现的目标,那么在Linux上有一个强大的帮助功能.

man -k <your search term>
Run Code Online (Sandbox Code Playgroud)

这样做的目的是列出在简短描述中包含搜索词的所有命令.通常很有可能你会找到你想要的东西.;)

这个输出有时可能有点压倒性,我建议将其缩小到可执行文件,而不是所有可用的man-pages,如下所示:

man -k find | egrep '\(1\)'
Run Code Online (Sandbox Code Playgroud)

或者,如果您还想查找需要更高权限级别的命令,请执行以下操作:

man -k find | egrep '\([18]\)'
Run Code Online (Sandbox Code Playgroud)

  • 我好奇......这个问题显示没有尝试通过搜索来解决手头的问题得到一个向上投票,一个友好的解释如何找出可能的命令被践踏.标准是什么?:) (3认同)

thu*_*yen 7

find命令将花费很长时间,因为它扫描文件系统中的真实文件。

最快的方法是使用locate命令,它会立即给出结果:

locate "John"
Run Code Online (Sandbox Code Playgroud)

如果没有找到该命令,则需要先安装mlocate包并运行updatedb命令来准备第一次搜索数据库。

更多详细信息请参见:https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab