実行しようとしています。
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