bash -cで始まる単一のコマンドラインを使用して、ディレクトリ全体の数をどのように計算できますか?

bash -cで始まる単一のコマンドラインを使用して、ディレクトリ全体の数をどのように計算できますか?

bash -cで始まる単一のコマンドラインを使用して、ディレクトリ全体の数をどのように計算できますか?

接頭辞付きのファイルを除くすべてのファイルが返されます。

 bash -c "stat /path/todir/**"

これにより、すべての.includeが返されます。 & ..は除外する必要があります。

bash -c "stat /path/todir/.*"

これはうまくいきますが、bash -cではうまくいかず、2行が必要です

shopt -s dotglob
stat /path/todir/**

これも

stat /path/todir/!(.|..)

ベストアンサー1

拡張 glob オプションは現在のシェルにのみ表示されます。いいえ実行されたサブシェルで。また、globオプションを使用できるようにするには、サブシェルでそれを設定する必要があります。再帰降下は、他の拡張オプションが設定されている場合にのみ**発生しますglobstar。現在のディレクトリ要件については、単に次のものを使用できます。*

bash -c 'shopt -s dotglob; stat /path/todir/*'

完全なシェルコマンドリストで一重引用符を使用することに注意してください。より安全です。不要な変数拡張(リテラル文字列渡し)を防ぎ、引用符付き文字列を簡単に使用できます。

外部部分を制御できる場合は、呼び出し自体'..'で拡張シェルオプションを次のように設定できます。

bash -O dotglob -c 'stat /path/todir/*'

つまり、find外部ユーティリティのようなものを使用するオプションがある場合は、次のことを行い.(現在のディレクトリ名)を除いて、現在のディレクトリ内のすべてのファイルを含めてstat一度に渡すことができます。

find . ! -path . -exec stat {} +

おすすめ記事