
當我從 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