web-dev-qa-db-ja.com

実行可能ファイルを再帰的に検索する

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が提供されたのと同じ結果が得られました。

3
Maksim Dmitriev

実際には、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を使用してもかまいません。

8
daisy

findには-execフラグが付属しているため、-lsを使用する必要はありません。

$ find Test/ -perm /u=x,g=x,o=x -type f -ls

manページから:

-ls True;現在のファイルを標準出力にls-dils形式でリストします。環境変数POSIXLY_CORRECTが設定されていない限り、ブロック数は1Kブロックです。設定されている場合は、512バイトのブロックが使用されます。ファイル名の異常な文字の処理方法については、「異常なファイル名」セクションを参照してください。

4
Bernhard

Findコマンドの-exec引数を使用する必要があります。

$ find Test/ -perm /u=x,g=x,o=x -type f -exec ls -l {} \;
3
pradeepchhetri