2016-12-02 99 views
1

我需要打印$ d所有用戶都有閱讀權限的子目錄...所以我以ls -l $dir開頭,然後我試圖繼續如下操作:ls -l $dir | grep "-r*"但它不承認第一個命令的輸出作爲grep的輸入

回答

1

您可以使用-P標誌,並提供一個Perl的正則表達式:

ls -l $dir | grep -P "^-r" 

這將列出所有以「-r開頭的所有文件「,這是你想要的。

+0

不錯!但我知道注意到它打印$ dir下的所有文件,我只想要所有的子目錄......我應該如何打印只有子目錄? –

+0

@UFCInsider你可以用'ls -l $ dir/*'代替。 – Maroun

+0

我必須以'ls -l $ dir |' –

0
find "$dir" -type d -perm -o+r 

的討論來看,到目前爲止,你在做什麼是目前最有可能得到你的目錄可讀他們業主

0

如果你想要所有的子目錄,你應該使用ls -lR $dir,那麼你必須過濾grep | grep '^dr[w-][x-]r[w-][x-]r[w-][x-]',我更喜歡實現這個最後的條件更安全,在1,4,7位置指定所需的字符和字符「r」。 詳細條件[list]意味着您可以用僅指定給列表中的一個字符替換它。有不同的方式來聲明字符的列表:

[abc] // you can replace with one between a or b or c. 
[1-7] // you can replace with one char between 1 2 3 4 5 6 or 7. 
[c-f] // you can replace with one c d e or f.  
[[:digit:]] // you can replace with one numeric char. 
[[:upper:]] // you can replace with one uppercase char. 
[[:lower:]] // you can replace with one lowercase char. 

只有目錄和子目錄:

ls -lR $dir | grep '^dr[w-][x-]r[w-][x-]r[w-][x-]' 

目錄,子目錄和文件:

ls -lR $dir | grep '^-r[w-][x-]r[w-][x-]r[w-][x-]' 

我沒有找到-P什麼將其標記爲man grep

相關問題