ls | grep -P "$1" | awk '{ x += $5 } END { print "total bytes:" x }'
該代碼返回0,使用「[0-9]」作爲reg expr,在當前文件夾中有2個文件命名爲「1」和「6 「,每個大小爲138bytes。Bash:匹配正則表達式的當前目錄中文件的總大小
任何人都可以幫我找到問題嗎?
ls | grep -P "$1" | awk '{ x += $5 } END { print "total bytes:" x }'
該代碼返回0,使用「[0-9]」作爲reg expr,在當前文件夾中有2個文件命名爲「1」和「6 「,每個大小爲138bytes。Bash:匹配正則表達式的當前目錄中文件的總大小
任何人都可以幫我找到問題嗎?
您只是缺少-l
選項至ls
。
ls -l | grep -P "$1" | awk '{ x += $5 } END { print "total bytes:" x }'
du
可以幫助你;它有一個-c
標誌用於顯示「總計」。它會產生一個包含總大小的最後一行,然後是總字數。因此,下面的應該給你在爲你的選擇總字節大小:
du -bc yourFilePattern | awk 'END {print $1}'
編輯:
如果像*pattern*
是不夠的,你需要一個正則表達式,只需使用:
ls | grep -P "$regex" | xargs du -bc | awk 'END {print $1}'
這一行,像[0-9]這樣的參數正在返回當前目錄中所有文件的大小。任何關於如何從reg expr過濾文件的建議? –
@AntonioFalcone:是不是'grep -P「$ 1」'應該過濾出來? –
現在工作正常,我的錯。謝謝 –