Find
對 find -exec ls 的輸出進行排序
是否可以
find … -exec ls -ls ;
按文件名按字母順序排序的輸出?這是我的 cron 命令:
find /home/setefgge/public_html -type f -ctime -1 -exec ls -ls {} \;
在大多數情況下,此命令可以正常工作。但是結果沒有按任何有意義的順序排序。如果它們按文件名欄位排序,那將非常有幫助。
我假設您的文件名不包含換行符。
find /home/setefgge/public_html -type f -ctime -1 -exec ls -nls {} + | sort -k 10
使用
+
而不是;
終止-exec
操作可以通過批量呼叫ls
. 您可以通過sort
命令通過管道進行排序;告訴它從第 10 個欄位開始排序(前 9 個是元數據:塊、權限、連結計數、使用者、組、大小和 3 個日期/時間欄位)。該選項-n
告訴ls
使用者和組使用數值,這避免了使用者或組名稱包含空格的風險。或者,使用 zsh,您可以通過使用glob 限定符來收集和排序文件並在命令行太長時多次
zargs
執行,從而擺脫對任何名稱的假設。ls
您確實需要 GNUls
(特別是它的-f
選項)來避免重新排序ls
(另一種方法是ls
使用 zsh’s進行模擬zstat
)。autoload -U zargs zargs -- /home/setefgge/public_html/**/*(.c-2) -- ls -lnsf