ls -d "$PWD"/* コマンドを実行すると、パラメーター・リストが長すぎます。

ls -d

実行しようとしています。

ls -d "$PWD"/* > formmlFileList43k.list

ただし、次のエラーが発生します。

bash: /bin/ls: Argument list too long

パイプを使用すると、そのような制限がないことを読んだ。パイプを使用して同じことをどのように実行できますか?

ls -d "$PWD"/* > formmlFileList43k.list

どんな助けでも大変感謝します。

ベストアンサー1

ディレクトリにエントリが多すぎます。これにより、シェルが*ARG_MAXバイトを超えるコマンドライン引数に拡張されます。

$ grep ARG_MAX /usr/include/linux/limits.h
#define ARG_MAX       131072    /* # bytes of args + environ for exec() */

find次の回避策を使用することをお勧めします。

$ find "${PWD}" -mindepth 1 -maxdepth 1 > formmlFileList43k.list

編集する:@hagelloは、ドットで始まるファイル名に関する重要なメモを作成しました。これらのファイルはfind出力から除外する必要があります。したがって、正しい解決策は次のとおりです。

$ find "${PWD}" -mindepth 1 -maxdepth 1 '!' -name '.*' > formmlFileList43k.list

おすすめ記事