隐藏 ls -l 的一些输出

隐藏 ls -l 的一些输出

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获取有关特定文件的信息,而不是lsstat输出更加可定制,因为它接受格式字符串:

$ 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。)

相关内容