Вы можете использовать find
с perl
Posixly:
$ find ! -name . -prune -print | perl -lne '
$h{$_} = -M;
END { print for sort {$h{$a} <=> $h{$b}} keys %h }
'
Это означает, что в имени файла нет символа новой строки.
Для работы с новой строкой можно:
$ find ! -name . -prune -exec printf "%s\0" {} + | perl -0lne ...
или использовать perl -le
, а затем разделить /\0/,<>
в своем коде.
Из вашего списка только четвертая возможность (написание небольшого скрипта SETUID в безопасном каталоге, например / usr / local / bin
, не изменяемый пользователем) может работать и Может быть в безопасности, но в настоящее время часто отключен от распределения.
Чем проще и лучший вариант - добавить следующую строку в / etc / sudoers (используйте e.g. Visudo
для этого)
YOURUSERNAME ALL = NOPASSWD: /sbin/sysctl vm.drop_caches=3
, а затем включите строку
sudo /sbin/sysctl vm.drop_caches=3
в вашем скрипте.