Bash
如何在沒有 xargs 的情況下對從標準輸入獲取的文件進行分類
為了更好地學習 shell,並且不必總是求助於 xargs,我一直在嘗試發現任何其他方法:
find . -name *.tcl | xargs -I{} cat {}
xargs 讓它感覺很亂,我想知道是否有多種方法可以實現這一點。
編輯:我確實發現另一種解決方案是使用:
find . -name "*.tcl" | cat `cat /dev/stdin`
我不明白為什麼我必須在 cat 將其視為文件而不是字元串之前 cat 文件名….
您還可以在子程序中使用 find 並將輸出提供給 cat :)
cat $(find . -name "*.tcl")
您可以在查找中使用 exec:
find . -name "*.tcl" -exec cat {} \;
-exec
和尾隨之間的所有內容都是\;
要執行的命令。與 xargs 一樣,您將查找結果替換為 {}。對於找到的每個文件 cat 執行(很像 xargs 如何遍歷通過 STDIN 給出的文件列表。有些人可能會爭辯說這更有效,因為您沒有使用管道或啟動另一個應用程序。