Test
というディレクトリとその中にいくつかのディレクトリがあります。 Test
とその中のディレクトリの両方に実行可能ファイルがあります。 ls
で印刷したいのですが。このコマンドを使用します。
ls -l `find Test/ -perm /u=x,g=x,o=x -type f`
これは良い/正しい/迅速なコマンドですか?
私の解決策は:
find Test/ -executable -type f -exec ls -l {} \;
warl0ckおよびpradeepchhetriが提供されたのと同じ結果が得られました。
実際には、lsコマンドをfindと統合できます。
find Test/ -type f -perm /u=x,g=x,o=x -exec ls -l {} \;
[〜#〜] update [〜#〜]
実際、-executable
は-perm /u=x,g=x,o=x
と同等ではありません。グループまたは他の人だけが実行できるファイルがあり、表示されない場合があります。
したがって、目的に応じて、自分だけがファイルを実行できるようにする場合は、-executable
を使用してもかまいません。
find
には-exec
フラグが付属しているため、-ls
を使用する必要はありません。
$ find Test/ -perm /u=x,g=x,o=x -type f -ls
man
ページから:
-ls True;現在のファイルを標準出力にls-dils形式でリストします。環境変数POSIXLY_CORRECTが設定されていない限り、ブロック数は1Kブロックです。設定されている場合は、512バイトのブロックが使用されます。ファイル名の異常な文字の処理方法については、「異常なファイル名」セクションを参照してください。
Findコマンドの-exec
引数を使用する必要があります。
$ find Test/ -perm /u=x,g=x,o=x -type f -exec ls -l {} \;