sudo を解決する方法: /bin/ls を実行できません: 引数リストが長すぎます

sudo を解決する方法: /bin/ls を実行できません: 引数リストが長すぎます

phpからこのコマンドを実行すると

sudo -u db2inst1 ls -t /var/lib/edumate/bdrs/*/*/daily/*NODE* | sort -r

私は受け取りますsudo: unable to execute /bin/ls: Argument list too long

ls は、各顧客に対して保持しているすべての毎日のバックアップ ファイルを一覧表示します。顧客はbdrsディレクトリの下に自身のディレクトリを持っています。そのため、以前は正常に動作していたため、ファイル数が許容数を超えて大きくなったと思われます。

1 つのシェル コマンドを使用して、毎日のバックアップ ファイルのリストを取得する方法はありますか?

答え1

find展開されたファイル名が実際のコマンドに含まれないように変換します(現在、シェルは「グロビング「それは望ましくありません。」

sudo -u db2inst1 find /var/lib/edumate/bdrs/ -ipath '/var/lib/edumate/bdrs/*/*/daily/*NODE*' | sort -r

答え2

zshを使えば簡単です。On グロブ修飾子ソート順序を逆辞書式の名前順に変更します。

sudo -u db2inst1 zsh -c 'print -l /var/lib/edumate/bdrs/*/*/daily/*NODE*(On)'

ちなみに、ソート順は気にしないので、-tに渡す意味はありません。ls

関連情報