findコマンドを知っている人なら、この質問は簡単に思えるかもしれません。しかし、findコマンドが私のシステムでは機能しないとしましょう。 「find」コマンドを使用せずに権限に従ってファイルを表示するにはどうすればよいですか?
ベストアンサー1
そうでない場合は、find
まだシェル(ワイルドカードを拡張できます)があり、ディレクトリの内容を繰り返して、最初に各ファイルがファイルであることを確認し、書き込み可能でないことを確認し、実行可能でないことを確認してから、次を確認できます。実行可能な読み取りです。
誰かがデモンストレーションのためにスクリプトを書くこともできますが、文書を読むことから始めるのは役に立ちます。POSIXテスト。
ところで、「ただ「質問のタイトルに書き込み可能または実行可能ファイルを除外します。」POSIXfind
、次のように表現できます。
find . -type f \! \( -perm -u=w -o -perm -u=x -o -perm -g=w -o -perm -g=x -o -perm -o=w -o -perm -o=x \)
牛に似た一種の栄養find
より簡潔な表現を可能にする拡張が提供される。
find . -type f \! -perm /u=wx,g=wx,o=wx
このtest
ユーティリティ([
およびより一般的に使用される)は、たとえば次の]
ような簡単なテストを提供します。find
for name in *; do [ -f "$name" -a -r "$name" -a ! -w "$name" -a ! -x "$name" ] && ls -l "$name"; done
ただし、その権限は次にのみ適用されます。ユーザー、いいえグループまたはその他。これに基づいてファイルを除外するには、次のものを使用できますls
。
for name in *; do [ -f "$name" ] && case "$(ls -l "$name")" in -r--r--r--*) echo "$name";; esac; done
または (実行ファイルを許可する場合)
for name in *; do [ -f "$name" ] && case "$(ls -l "$name")" in -r-?r-?r-*) echo "$name";; esac; done