我知道使用grep
來提取匹配特定字符串的行。現在我有一堆文件,我想知道哪一個包含特定的字符串。有沒有辦法使用bash命令來實現這一點?謝謝。bash命令輸出包含特定字符串的文件名
回答
grep -l只列出文件名。
我用這一切的時候編輯包含一些
vi $(grep -l pattern) # edit all files containing pattern
請修改您的問題,如果這樣做沒有幫助足夠的文件。
在我的第一個答案下發表了評論。有多種模式,其任務是獲取匹配所有文件的文件列表。包括GNU的大多數greps都不實現正則表達式& intersection operator。我們可以做的是首先獲得與第一個模式匹配的文件列表。然後將該文件列表提供給另一個grep以針對下一個模式進行測試等等。
一種方法是用命令替換,這是笨拙和休息時有在文件名中的空格:
grep -l pat2 $(grep -l pat1 $(grep -l pat0 *)))
# $(grep -l pat0 *) gets replaced with the names of files matching pat0
# then $(grep -l pat1 <list>) is further refined to include only those matching pat1
# then $(grep -l pat2 <that-list>) is refined once more
使用xargs的溶液在上述解決方案解決了一些弱點以及摺疊遠離嵌套。我們把每個grep的-l級輸出的文件列表,並將其轉換爲論據,下一階段使用xargs的:
grep -l pat0 * | xargs grep -l pat1 | xargs grep -l pat2
A「編譯」這個可以寫,例如
# the multigrep shell function takes these arguments and produces a pipeline
# like above, then evaluates it using eval.
multigrep pat0 pat1 pat2 *
當然,如果模式都只是固定的字符串,作爲原始郵件中暗示,-F添加到裏grep。
如果任何階段產生一個空文件列表,我認爲這個東西會中斷,因爲那麼xargs會運行grep,並且會從stdin中獲得材料。可以應用通常的/ dev/null參數hack。當然GNU xargs有--no-run-if-empty。 – Kaz 2012-03-05 23:58:09
非常感謝你! – user1224398 2012-03-06 00:10:25
GNU grep應該有-P(PCRE),它具有您正在尋找的正則表達式功能。 – jordanm 2012-03-07 01:58:02
- 1. 如何使用linux命令列出包含特定字符串的文件
- 2. Subversion:重命名所有包含特定字符的文件夾
- 3. Powershell:重命名包含特定字符的文件
- 4. 如何重命名包含特定文本字符串的文件?
- 5. 輸出輸入,如果它不包含特定的字符串
- 6. Windows'findstr'命令:排除包含特定字符串的結果
- 7. 如何攔截包含特定字符串的命令?
- 8. Bash命令輸出比較空文本字符串
- 9. 重命名包含'©'字符的文件
- 10. 來自命令輸出的grep特定字符串
- 11. 字符串包含特定文本
- 12. 在bash命令中包含字符串表達式
- 13. 執行包含重定向字符的bash行(命令)
- 14. 如何檢查文件是否包含使用bash的特定字符串
- 15. 獲取包含特定字符串的特定文件夾中的文件
- 16. 用'bar'重命名包含子字符串'foo'的文件
- 17. 命令行檢查一個字符串變量是否包含特定文本
- 18. unix命令行...如何grep並只顯示包含字符串的文件名?
- 19. 如何搜索包含特定文本字符串的文件?
- 20. top命令的輸出包含奇怪的字符
- 21. Bash:字符串包含連字符
- 22. 線軸輸出到特定的文件從命令提示符
- 23. Bash字符串(命令輸出)相等性測試
- 24. 列出包含字符串的域名
- 25. Windows命令行命令在密碼中包含特殊字符
- 26. 只包含特定字符串的文件的grep部分
- 27. 打印包含包含特定字符串的文件的所有目錄
- 28. Bash確定變量名是否包含一個字符串
- 29. 使用Hadoop查找包含特定字符串的文件
- 30. 如何搜索包含特定字符串的所有文件?
非常感謝您的幫助。 '-l'確實是我需要的操作,但是如果有多個模式,我如何找到文件,而不是包含同時匹配所有模式的行? – user1224398 2012-03-05 22:31:39
偉大的卡茲!這個命令非常有幫助! :) – 2012-03-05 23:26:29
關於通過AND結合的多種模式,您可以執行的操作是遵循上面的想法。獲取與pattern1匹配的文件列表。然後將其提供給另一個grep -l等。我會爲此做出另一個答案。 – Kaz 2012-03-05 23:38:21