ls -lht 的输出是
-rwxrwxrwx 1 root root 1.6G Jan 3 05:32 vServer.log
运行时ls -lht
我可以添加一些仅显示大小、修改日期和文件名的内容吗?
1.6G Jan 3 05:32 vServer.log
使用: 我正在备份直播服务器到备份服务器通过 rsync,但我想比较目录以查看是否有新文件直播服务器在运行 rsync 之前,这样如果没有新文件,我可以发送电子邮件提醒。
答案1
如果您只想比较实时服务器和备份服务器之间的文件和目录的差异,您可以尝试下面的 rsync 试运行。
rsync -ravun --delete {source} {destination} |grep "^deleting "
来自 man rsync:
u - 跳过接收方较新的文件
n - 进行试运行,不做任何更改
答案2
如果你只想要
1.6G Jan 3 05:32 vServer.log
从
-rwxrwxrwx 1 root root 1.6G Jan 3 05:32 vServer.log
然后您可以使用 awk 删除前四列。
ls -lht vServer.log | awk '{$1=$2=$3=$4=""; print $0}'
答案3
使用stat
获取有关特定文件的信息,而不是ls
。stat
输出更加可定制,因为它接受格式字符串:
$ stat -c '%s %y %n' /var/log/Xorg.0.log
82346 2017-01-03 19:26:17.799547336 +0900 /var/log/Xorg.0.log
$ stat -c '%s %Y %n' /var/log/Xorg.0.log
82346 1483439177 /var/log/Xorg.0.log
%y
和%Y
是最后修改时间,前者是 Unix 时间戳,后者是人性化的。对于简单地在脚本中处理信息来说,%y
更方便。
要获得的行为-t
,您可以sort
输出(在第二个字段-k2,2
,以数字形式-n
,反向-r
):
stat -c '%s %y %n' | sort -rnk2,2
(我假设您的文件名或路径中没有换行符,我猜这对于日志来说是一个安全的假设 - 但如果您有,则stat
的--printf
选项可让您创建空分隔输出,sort
可以使用 很好地处理-z
。)