爲什麼find . -name "*.xml" | xargs grep FOO
返回與文件名匹配,而find . -name "*.xml" | xargs -i -sh -c "grep FOO {}"
不是?使用xargs和xargs時的差異-i
4
A
回答
7
除非它在您的問題發佈一個錯字不應該有連字符sh
前:
你沒有得到的原因輸出文件名是grep
正與一個文件作爲參數運行。要強制文件名輸出使用-H
。
find . -name "*.xml" | xargs -I {} sh -c "grep -H FOO {}"
此外,-i
爲xargs
各地4.2.9版本被棄用。您應該使用-I {}
。
0
你可以使用
find . -name "*.xml" | xargs -I{} grep FOO {}
,並根據您的需要,你可以使用-H
或-n
在grep
命令。
4
正如之前的回答所說的,不同之處在於每個文件都會調用grep,如果在命令行中只指定了一個文件,grep就不報告文件名,除非-H(--with-filename)國旗給出。
爲什麼每個文件都會調用grep?這是因爲(喜歡或不喜歡)對xargs使用-I(或-i)標誌會強制命令對每個參數運行一次,如使用標誌「-L 1」到xargs。
從手冊頁:
-I replace-str Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1.
相關問題
- 1. xargs和git log --grep
- 2. 使用xargs的作爲切
- 3. 可以使用xargs的
- 4. 與xargs的
- 5. 在xargs中使用bash類型的`$ {i%.mp3}`語法?
- 6. 在Makefile中使用xargs basename
- 7. 管道和xargs的=>頂
- 8. 找到xargs的和焦油
- 9. xargs xargs爲什麼執行xargs會在屏幕上打印的內容?
- 10. Linux xargs命令
- 11. xargs不工作
- 12. 結合xargs並行和mpirun
- 13. XARGS,GREP和GNU並行
- 14. xargs和參數位置
- 15. 瞭解空格和xargs
- 16. 忽略了xargs的
- 17. 使用測試裏面xargs的
- 18. xargs的使用具有多個參數
- 19. 用xargs移動文件
- 20. 「find -type f -iname'* .txt'| xargs -I {} echo」「> {}」不起作用
- 21. 使用rm使用find刪除文件和xargs的
- 22. Shell腳本:使用bash與xargs
- 23. 使用xargs並行運行程序
- 24. 如何在xargs中使用替換?
- 25. 在GIT for Windows bash中使用'xargs'
- 26. 關於xargs和通配符的技巧
- 27. 捲曲和xargs的在管道命令
- 28. 獲取xargs的序列號
- 29. xargs的替代品-l
- 30. 調整xargs的接受-lh
不提供答案的規定的問題。 – andr 2013-03-14 02:42:20