Bash
如何使用以 bash -c 開頭的單個命令行來統計整個目錄?
如何使用以 bash -c 開頭的單個命令行來統計整個目錄?
這將返回除以 . 為前綴的所有文件之外的所有文件。
bash -c "stat /path/todir/**"
這將返回所有以 . 包含 。& .. 這應該被排除在外。
bash -c "stat /path/todir/.*"
這有效,但不適用於 bash -c 並且需要兩行
shopt -s dotglob stat /path/todir/**
這個也是
stat /path/todir/!(.|..)
擴展的 glob 選項僅對目前 shell 可見,對啟動的子shell*不可見。*您還需要將它們設置在子外殼中,以便 glob 選項可用。只有在設置
**
了另一個擴展選項時才會進行遞歸下降globstar
。對於您僅對目前目錄的要求,您可以使用*
bash -c 'shopt -s dotglob; stat /path/todir/*'
請注意在整個 shell shell 命令列表中使用單引號。在某種程度上,您可以避免不必要的變數擴展(傳遞文字字元串)並輕鬆使用帶引號的字元串,這樣會更加安全。
如果您可以控制外部的部分,則
'..'
可以將呼叫本身中的擴展 shell 選項設置為bash -O dotglob -c 'stat /path/todir/*'
也就是說,如果可以使用類似的外部實用程序的選項
find
,您可以在下面執行僅排除.
(目前目錄名稱)並包含目前目錄中的所有文件並stat
一次性傳遞它的選項。find . ! -path . -exec stat {} +