Получить новое имя файла в переменную старше определенного времени - PullRequest
0 голосов
/ 10 сентября 2018

Я новичок в Linux, вам нужна небольшая помощь, ребята.

Я хочу, чтобы новейшее имя файла изменялось до определенного времени в переменной.

Я могу получить результат от команды ниже. но я получаю время изменения файла и имя файла.

find /home/administrator/ -not -path '*/\.*' -type f -mmin +100 -printf "%TY-%Tm-%Td %TT %p\n" | sort -nr | head -n 1

ниже вывод команды выше

2018-09-10 18:39:18.3099856630 /home/administrator/K.sh

Желаемый вывод -> K.sh

как я могу получить имя файла только в переменную? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Множество вариантов, пара приходит на ум:

  • ... | sed 's/^.*\///'
  • ... | cut -d' ' -f3 | xargs basename

(я не знаком сопция printf. Она нестандартная - может быть, только для GNU? - и недоступна на Mac.)

0 голосов
/ 10 сентября 2018

Поскольку вы уже используете опцию -printf команды find, вы можете получить последний элемент пути (имя файла), просто заменив все эти форматы на «% f»:

find /home/administrator/ -not -path '*/\.*' -type f -mmin +100 -printf "%f\n"

Вы можете добавить конвейер регулярных выражений в конце, если результаты должны быть отсортированы таким образом. Это может быть сделано слишком многими способами, вот пример с Perl:

find /home/administrator/ -not -path '*/\.*' -type f -mmin +100 -printf "%TY-%Tm-%Td %TT %p\n" | sort -nr | head -n 1 | perl -lne 'print $1 if /.+\/(.+)/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...