現在のディレクトリのファイル、ディレクトリ、および実行可能ファイルのリスト

現在のディレクトリのファイル、ディレクトリ、および実行可能ファイルのリスト

私はPHPシェルを持っていて、これを行う関数があります(しかしscandir($path)関数を呼び出すとPHPの制限のためにエラーが発生します)。したがって、同じことをするにはbashシェルを使用する必要があります。

区切り文字で区切られた3つの項目のすべてをリストする1つのコマンドでも、3つのコマンドでもかまいません。

最良のアプローチは何ですか?私が考えることができる唯一のことは、findいくつかのオプションを使用して3回行うことです。-maxdepth 1

答え1

GNUを使用すると、find以下を呼び出すことができます。

find /some/dir -mindepth 1 -maxdepth 1 -type f \
  \( -executable -printf 'X%p\0' -o -printf 'F%p\0' \) -o \
  -type d -printf 'D%p\0'

出力は、最初の文字が識別されるNULで区切られた(NULはファイルパスには現れない唯一の文字)レコードのリストです。タイプXFD実行可能な一般ファイル、その他の一般ファイル、およびディレクトリに使用されます)

シンボリックリンクの場合、シンボリックリンクのターゲットタイプを考慮するには、上記の-xtype代わりに使用します。この検索コマンドを実行するプロセスで実行可能ファイルを返します。他の種類のファイル(fifo、ソケット、ゲート、デバイス...)は無視されます。ディレクトリエントリも無視されます。-type-executable...

関連情報