我的命令是這樣的如何使用「grep」命令列出用戶在當前目錄下可執行的所有文件?
ls -l|grep "\-[r,-][w,-]x*"|tr -s " " | cut -d" " -f9
但對於結果我得到的所有文件,不僅爲它的用戶必須執行(第X位時)的權利的人。 我運行Linux操作系統Ubuntu
我的命令是這樣的如何使用「grep」命令列出用戶在當前目錄下可執行的所有文件?
ls -l|grep "\-[r,-][w,-]x*"|tr -s " " | cut -d" " -f9
但對於結果我得到的所有文件,不僅爲它的用戶必須執行(第X位時)的權利的人。 我運行Linux操作系統Ubuntu
OK - 如果必須使用grep:
ls -l | grep '^[^d]..[sx]' | awk '{ print $9 }'
不要使用grep。如果您想知道文件是否可執行,請使用test -x
。要檢查所有文件在當前目錄下,使用find
或一個for循環:
for f in *; do test -f "$f" -a -x "$f" && echo "$f"; done
或
find . -maxdepth 1 -type f -exec test -x {} \; -print
好吧,但我想找到的錯誤在我的grep命令,我確信我理解如何使用grep,並且仍然無法在這裏找到錯誤。 – nikojov
使用awk
與match
ls -l|awk 'match($1,/^...x/) {print $9}'
match($1,/^...x/)
:匹配第一場正則表達式^...x
,即搜索所有者許可結束於x
。這也會匹配目錄。建議使用'/^[^ d] .. X /'爲圖案 – Dave
謝謝你這是正確的。任何想法我做錯了什麼? – nikojov
刪除'x'後面的星號。 – Jack
爲了澄清,'x *'表示「零或多次出現x」。 – Jack