是否可以find … -exec ls -ls ;
按文件名按字母顺序排序输出?
这是我的 cron 命令:
find /home/setefgge/public_html -type f -ctime -1 -exec ls -ls {} \;
Run Code Online (Sandbox Code Playgroud)
大多数情况下,此命令可以正常工作。但是结果没有按任何有意义的顺序排序。如果它们按文件名字段排序,那将非常有帮助。
Gil*_*il' 15
我假设您的文件名不包含换行符。
find /home/setefgge/public_html -type f -ctime -1 -exec ls -nls {} + | sort -k 10
Run Code Online (Sandbox Code Playgroud)
使用+
而不是;
终止-exec
操作可以通过批处理ls
. 您可以通过sort
命令管道进行排序;告诉它从第 10 个字段开始排序(前 9 个是元数据:块、权限、链接计数、用户、组、大小和 3 个日期/时间字段)。该选项-n
告诉ls
对用户和组使用数值,这避免了用户或组名称包含空格的风险。
或者,使用 zsh,您可以通过使用glob 限定符来收集和排序文件并在命令行太长时多次zargs
运行而无需假设任何名称ls
。您确实需要 GNU ls
(特别是它的-f
选项)以避免重新排序ls
(另一种方法是ls
使用 zsh进行模拟zstat
)。
autoload -U zargs
zargs -- /home/setefgge/public_html/**/*(.c-2) -- ls -lnsf
Run Code Online (Sandbox Code Playgroud)