替代 ls | grep

替代 ls | grep

我正在尝试搜索特定文件夹的文件和目录。例如,我正在寻找/usr/bin我的python二进制文件。为此,我使用了ls | grep python.当我这样做时,我能够找到,例如,,,python3等等python3-config

虽然这工作正常,但我知道有更简单的方法可以做到这一点:我不必通过管道传输到grep.但是当我尝试时find . -name python,根据我对find手册页的理解,它没有产生任何结果。

我知道grep搜索文件。搜索给定目录的正确方法是什么?

答案1

你可以使用“globbing”做几件事简而言之:shell 尝试匹配

? to any character, (unless it is "protected" by single or double quotes
* to any string of characters (even empty ones), unless protected by single or double quotes 
[abc] can match either 'a', 'b' or 'c'
[^def] is any single character different than 'd', 'e' or 'f'

因此,要匹配 /usr/bin 下任何包含 python 的内容:

ls -d /usr/bin/*python*  # just looks into that directory

或者与 find 一起使用,您还可以使用通配符。但是,您需要将其用引号引起来,以便 shell 不会展开它们,而是将它们完整地传递给 find 命令:

find /usr/bin -name '*python*'  # could descend into subfolders if present

相关内容