有人可以用perl one liner帮助我获得以下内容吗?它必须是perl。
drwxr-x--- - abc_grid abc_fltr 0 2012-02-05 23:24 /samples/abc/accounts/filtered/20120204
drwxr-x--- - abc_grid abc_fltr 0 2012-02-12 14:31 /samples/abc/accounts/filtered/20120211
drwxr-x--- - abc_grid abc_fltr 0 2012-02-19 14:31 /samples/abc/accounts/filtered/20120218
drwxr-x--- - abc_grid abc_fltr 0 2012-02-29 00:24 /samples/abc/accounts/filtered/20120225
drwxr-x--- - abc_grid abc_fltr 0 2012-03-05 11:36 /samples/abc/accounts/filtered/20120303
我想要最后一条记录和路径。
/samples/abc/accounts/filtered/20120303
答案 0 :(得分:3)
ls -l|perl -lane 'END{print $F[-1]}'
答案 1 :(得分:3)
如果我们打高尔夫球,那么
ls -l|perl -lane 'END{print $F[-1]}'
可以缩短为
ls -l|perl -lane'END{print$F[-1]}'
ls -l|perl -lane'}{print$F[-1]'
ls -l|perl -lane}{print\$F[-1]
ls -l|perl -anE}{say\$F[-1]
这是一个不使用ls
的ungolfed解决方案。无论如何,这种方式更可靠。
perl -E'say(( sort { -M $a <=> -M $b } @ARGV )[0])' \
/samples/abc/accounts/filtered/*
参考:-M
答案 2 :(得分:2)
perl -ne 's/^.* //; $last = $_; END { print $last; }'
答案 3 :(得分:2)
perlrun -a
:
ls -l | tail -1 | perl -lane 'print $F[-1]'
答案 4 :(得分:1)
我在这里假设你想要的是/ samples / abc / accounts / filtered目录中最近修改过的文件的完全限定路径名。这与你上面的例子有关。如果不对,请随意纠正我。
使用“纯Perl”限制,您可以使用...
perl -e '$d="/samples/abc/accounts/filtered";print +(sort { -M "$a" <=> -M "$b" } glob("${d}/*"))[0], "\n"'
但我认为在这种情况下我只是使用shell ...
ls -1dt /samples/abc/accounts/filtered/* | tail -1