2

Пытаясь решить эту проблему, я нашел решения, которые не совместимы между Ubuntu и OSX. Я хочу сделать одну команду замены для следующих двух, которые отличаются двумя символами:

OSX:

find . -type f -exec stat -f "%m {}" {} \;| sort -n | tail -n 1 | cut -d ' ' -f 2

Ubu:

find . -type f -exec stat -c "%Y {}" {} \;| sort -n | tail -n 1 | cut -d ' ' -f 2

1 ответ1

2

Команда stat не является частью POSIX, поэтому системы могут иметь различные реализации.

Предполагая, что Perl доступен, должно работать следующее:

-exec perl -MFile::stat -e 'print stat($_)->mtime, " $_\n" for @ARGV' {} \;

-exec perl -e 'print ((stat($_))[9], " $_\n") for @ARGV' {} \;

Версия с -MFile::stat более читаема , но, к сожалению, в несколько раз медленнее.

Полный сценарий будет выглядеть так:

find . -type f -exec perl -e 'print ((stat($_))[9], " $_\n") for @ARGV' {} + |
  sort -n | tail -n 1 | cut -d " " -f 2-

(обратите внимание на 2- в конце)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .