给出这样的输出:
-rw-r--r-- 1 tinosino staff 4.0K 21 Mar 2012 EtcHosts_Backup_2012-03-21_21-19-10.txt
-rw-r--r-- 1 tinosino staff 3.8K 1 Apr 2012 EtcHosts_Backup_2012-04-01_01-06-12.txt
-rw-r--r-- 1 tinosino staff 3.9K 18 Jun 2012 EtcHosts_Backup_2012-06-18_18-33-40.txt
-rw-r--r-- 1 tinosino staff 3.9K 27 Aug 2012 EtcHosts_Backup_2012-08-27_09-37-44.txt
我想得到最后一行(8月27日)的最后一个字段(文件名),基本上是:
EtcHosts_Backup_2012-08-27_09-37-44.txt
我感兴趣的是如何在perl
中做到最好。
如果只有ls
有更好的方法来实现这一点,那就不是我想要的了(我知道我可以按日期,创建,修改等排序,我可以{{1}只显示文件名)
这主要是关于如何在-1t
perl
中学习如何做的事情:
awk
,并提供:
ll | tail -n 1 | awk '{print $NF}'
这是“理想的答案”。
这是我的尝试:
EtcHosts_Backup_2012-08-27_09-37-44.txt
我可以改进这个看起来丑陋的...... F? ll | perl -lane 'eof() && print $F[$#F]'
答案“似乎是正确的”,但获得$ NF的方式似乎是原始的。
答案 0 :(得分:1)
改进:
perl -lane 'eof() && print $F[-1]' # or ...
perl -lane 'eof() && print pop @F'
此外:
perl -lane 'END { print $F[-1] }' # or...
perl -lane 'END { print pop @F }'
当然,为什么不呢:
ls | tail -1
答案 1 :(得分:1)
要回答有关改进$F[$#F]
的具体问题,Perl支持使用负数作为数组索引。例如,-1表示列表的最后一个元素,因此您可以将单行编写为:
ll | perl -lane 'eof() && print $F[-1]'