当我从 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
目录下有他们的目录。所以我猜想文件数量超过了允许的数量,因为它曾经正常工作。
有没有办法使用一个 shell 命令获取所有每日备份文件的列表?
答案1
将其转换为find
,以便扩展的文件名不会出现在实际命令中(现在 shell 是“通配“这是你不想要的。
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
to是没有意义的,因为您不关心它的排序顺序。ls