我試過下面的命令來打印帶有製表符分隔的find命令的輸出。如何打印帶有製表符分隔的find命令的輸出
echo -e "\t"; find /usr/live/class/$client_abbr -name "$line.cls" -exec grep '^#include' {} \;
如果輸出所包含的行n個,僅第一行印刷有製表符分隔的,並且它不被施加到線的其餘部分。請讓我知道我如何修改上述命令在所有行前面都有選項卡。
我試過下面的命令來打印帶有製表符分隔的find命令的輸出。如何打印帶有製表符分隔的find命令的輸出
echo -e "\t"; find /usr/live/class/$client_abbr -name "$line.cls" -exec grep '^#include' {} \;
如果輸出所包含的行n個,僅第一行印刷有製表符分隔的,並且它不被施加到線的其餘部分。請讓我知道我如何修改上述命令在所有行前面都有選項卡。
您可能會發現管道到xargs
比使用-exec
更有效。額外的引號-type f
和-print0
分別爲了安全起見,用於指定您需要文件(而不是目錄)以及啓用帶有嵌入式白色空間的文件名。輸入grep
輸出到sed
(歸屬於Fischer的評論),您將得到您所需的信息。
find "/usr/live/class/$client_abbr" -type f -name "$line.cls" -print0 |
xargs -0 grep '^#include' |
sed 's/^/\t/'
嘿,好的。我喜歡。 –
另一方面,如果你不需要*非必要的'-print0'選項來查找''find''或非標準的'-0'選項到'xargs',甚至''xargs'本身使用'find'的'-exec'初級。我不相信從這些效率中獲得的收益證明了明晰度和符合標準的損失。 –
@John - YMMV - 對我來說速度有幫助。如果Vishnu有少量文件需要篩選,那麼'-exec'(或'-execdir')就足夠了。 –
你可以通過sed管道:'find ... | sed's/^/\ t /'' –
我的Spider Sense告訴我也可以從頭開始刪除'echo -e「\ t」;'運行命令的其餘部分,存儲中間結果(如果需要的話),然後遍歷它。然後對於每一行,'echo -e \ t'。但是,我喜歡正則表達式的方法。 –