我跑ls -l
这带来了以下的输出:“LS”命令输出
-rw-r----- 1 webadm webgrp 168 Jul 19 16:00 SYNCHRO_20120719_1600.csv
有没有办法有刚刚拿到最后两个字段?即:
16:00 SYNCHRO_20120719_1600.csv
我跑ls -l
这带来了以下的输出:“LS”命令输出
-rw-r----- 1 webadm webgrp 168 Jul 19 16:00 SYNCHRO_20120719_1600.csv
有没有办法有刚刚拿到最后两个字段?即:
16:00 SYNCHRO_20120719_1600.csv
试试这个:
ls -l | awk '{print $(NF-1), " ", $NF}'
它将显示就行了,这是时间的名称下一个到最后一个和最后一个领域目录条目并且不依赖于对于字段的特定数字。
但是可能会产生包含空白的名称问题。
请参阅this page关于使用'ls'
进行处理,由@CharlesDuffy提供,这有点破坏了上面的方法:-) ..所以提出的快速解决方案应该在该上下文中查看。
不只是带空格的名字 - 一般来说'ls'是如何命名的(包括具有其他形式的非可打印字符的名称)在实现中并没有很好的定义。更好地使用shell globbing来获取名称,以及其他东西(可以用ls)来读取他们的时间。见http://mywiki.wooledge.org/ParsingLs – 2012-07-19 14:28:52
@CharlesDuffy感谢您提供的反馈,有用的信息等。我同意,这是一个尴尬的(很可能是“不确定”)解决方案。 – Levon 2012-07-19 14:31:04
这应该做你想要什么:
ls -l | awk '{print $8" "$9}'
这不适用于带空格的文件名。 – 2012-07-19 14:22:41
我完全同意! – 2012-07-19 14:25:30
对于我的Linux帐户,我不得不使用字段$ 7和$ 8 – Levon 2012-07-19 14:26:26
在一个系统与GNU日期:
for f in *; do
printf '%s %s\n' "$(date +%H:%M -r "$f")" "$f"
done
这将正确的文件名与工作空间 - 甚至是用换行的文件名,但它将无法区分文件名嵌入的换行符和记录分隔的换行符。 (如果这很重要,请使用空分隔符)。
如果我们要标记这个问题,那它不应该至少迁移到适当的地方(即超级用户)吗? – 2012-07-19 15:13:44