Command-Line

替代 ls |grep

  • February 1, 2021

我正在嘗試搜尋特定文件夾的文件和目錄。例如,我正在尋找/usr/bin我的python二進製文件。為此,我使用了ls | grep python. 當我這樣做時,我能夠找到例如 、python3python3-config

雖然這很好用,但我知道有更簡單的方法可以做到這一點:我不應該通過管道傳輸到grep. 但是當我嘗試時find . -name python,根據我對find手冊頁的理解,它沒有產生任何結果。

我知道grep通過文件搜尋。搜尋給定目錄的正確方法是什麼?

您可以使用“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

或者通過查找,您也可以使用萬用字元。但是,您需要將其括在引號中,以便 shell 不會擴展它們,而是將它們提供給帶有 ‘*’ 完整的 find 命令:

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

引用自:https://unix.stackexchange.com/questions/632004