我想檢查一個目錄的所有文件中具有相同擴展名的所有文件(例如,「遞歸」)的出現次數,例如, *。C。我正在Unix中使用SO Solaris。計算幾個文件中發生的次數
我嘗試了一些解決方案,在其他職位給出的,而唯一可行的就是這一個,因爲在此係統中,我不能用命令grep -o
:
sed 's/[^x]//g' filename | tr -d '012' | wc -c
其中x是我想要的發生數。這一個工程,但它不是遞歸的,有什麼辦法讓它遞歸?
我想檢查一個目錄的所有文件中具有相同擴展名的所有文件(例如,「遞歸」)的出現次數,例如, *。C。我正在Unix中使用SO Solaris。計算幾個文件中發生的次數
我嘗試了一些解決方案,在其他職位給出的,而唯一可行的就是這一個,因爲在此係統中,我不能用命令grep -o
:
sed 's/[^x]//g' filename | tr -d '012' | wc -c
其中x是我想要的發生數。這一個工程,但它不是遞歸的,有什麼辦法讓它遞歸?
您可以從find
獲得遞歸列表並使用-exec
參數執行命令。
我建議這樣的:
find . -name '*.c' -exec cat {} \; | tr -c -d ']' | wc -c
的-c
參數tr
意味着使用提供的字符串相反 - 即,在這種情況下,匹配所有但]
。
find命令中的.
表示在當前目錄中進行搜索,但您也可以在其中提供任何其他目錄名稱。
此解決方案完全可行,非常感謝! – Vpdj
我希望你已經安裝了nawk。那麼你可以:
nawk '{a+=gsub(/\]/,"x")}END{print a}' /path/*
nawk不能很好地與我的操作系統工作,但無論如何謝謝你的答覆! – Vpdj
你可以自己寫一個代碼片段代碼。我建議你運行以下命令:
awk '{for (i=1;i<=NF;i++) if ($i=="[") n++} END{print n}' *.c
這將在所有文件中搜索「[」在當前目錄和打印出現的次數。
你可以通過用'*'(對於當前目錄)或'/ dir/*'替換'filename'作爲另一個目錄甚至是'/dir1/*.txt/dir2/*'來遞歸。 txt'掃描兩個目錄。如果您想搜索所有目錄的recursivelly,那麼使用'find'是正確的方法。 –
謝謝喬治,你是完全正確的,我想要後者的選擇,所以我用Grisha建議我做的工作找到了,謝謝! – Vpdj