Command-Line
替代 ls |grep
我正在嘗試搜尋特定文件夾的文件和目錄。例如,我正在尋找
/usr/bin
我的python
二進製文件。為此,我使用了ls | grep python
. 當我這樣做時,我能夠找到例如 、python3
等python3-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