Perl однострочный скрипт для получения последней записи с путем - PullRequest
2 голосов
/ 09 марта 2012

Может кто-нибудь помочь мне с 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

Ответы [ 5 ]

3 голосов
/ 10 марта 2012

Если мы играем в гольф, то

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. В любом случае, так надежнее.

perl -E'say(( sort { -M $a <=> -M $b } @ARGV )[0])' \
    /samples/abc/accounts/filtered/*

Ссылка: -M

3 голосов
/ 10 марта 2012
ls -l|perl -lane 'END{print $F[-1]}'
2 голосов
/ 09 марта 2012

perlrun -a:

   ls -l | tail -1 | perl -lane 'print $F[-1]'
2 голосов
/ 09 марта 2012
perl -ne 's/^.* //; $last = $_; END { print $last; }'
1 голос
/ 09 марта 2012

Здесь я предполагаю, что вам нужно полное имя пути последнего измененного файла из каталога / samples / abc / accounts / Filter. Это идет от вашего примера выше. Не стесняйтесь поправлять меня, если это не так.

С вашим ограничением "чистого Perl" вы можете использовать ...

perl -e '$d="/samples/abc/accounts/filtered";print +(sort { -M "$a" <=> -M "$b" } glob("${d}/*"))[0], "\n"'

Но я думаю, что в этом случае я бы просто использовал оболочку ...

ls -1dt /samples/abc/accounts/filtered/* | tail -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...