2016-12-02 3 views
1

すべてのユーザーに対して読み取りアクセス権を持つ$ dのすべてのサブディレクトリを印刷する必要があります... ls -l $dirで始まり、次にこのように続行しようとしました:ls -l $dir | grep "-r*"それはあなたが-Pフラグを使用し、Perlの正規表現を提供することができますグレップ

答えて

1

の入力として、最初のコマンドの出力を認識しません:

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の位置に必要なcharとchar "r"を指定してより安全に実装することをお勧めします。 詳細条件[list]は、リストに指定された1つの文字で置き換えることができることを意味します。文字のリストを宣言するための別の方法があります:

[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にフラグを立てます。

関連する問題