С помощью команды LS, чтобы показать дату изменения и определенное количество файлов

В случае, если кто-то пытается автоматически удалить пропущенный # server_tokens off; из nginx, чтобы помочь с автоматическим dev-ops:

sudo sed -ri 's/#\s(server_tokens off;)/\1/' /etc/nginx/nginx.conf.

Протестировано и работает для nginx /1.12.1 на Ubuntu 16.04 LTS. Связанный ответ на блокировку NGINX, отключив здесь токены сервера.

1
задан 6 June 2018 в 17:38

2 ответа

stat - простой способ, но он не может печатать временную метку в формате, подобном ls -l. Если вы хотите более мелкомасштабный контроль над форматом, используйте find с опцией -printf, например, для (почти) ls -l -подобного формата:

find -maxdepth 1 -type f -printf "%T+#%Tb %Td %TH:%TM\t%p\n" | sort -rn | cut -d# -f2- | head -8

Для корректной сортировки выходного сигнала %T+ необходимо удалить cut. Прочитайте man find, чтобы узнать больше о -printf -printf.

Пример run

$ ls -l
total 0
-rw-rw-r-- 1 dessert dessert 0 May 30 20:22 last week
-rw-rw-r-- 1 dessert dessert 0 Jun  6 17:22 today
-rw-rw-r-- 1 dessert dessert 0 Jun  5 17:22 yesterday
$ stat -c $'%y\t%n' * | sort -n
2018-05-30 20:22:29.919608691 +0200     last week
2018-06-05 17:22:10.207084356 +0200     yesterday
2018-06-06 17:22:01.940284127 +0200     today
$ find -maxdepth 1 -type f -printf "%T+#%Tb %Td %TH:%TM\t%p\n" | sort -rn | cut -d# -f2-
Jun 06 17:22    ./today
Jun 05 17:22    ./yesterday
May 30 20:22    ./last week
$ find -maxdepth 1 -type f -printf "%T+#%Tc\t%p\n" | sort -rn | cut -d# -f2-
Wed 06 Jun 2018 05:22:01 PM CEST        ./today
Tue 05 Jun 2018 05:22:10 PM CEST        ./yesterday
Wed 30 May 2018 08:22:29 PM CEST        ./last week
$ find -maxdepth 1 -type f -printf "%T+\t%p\n" | sort -rn
2018-06-06+17:22:01.9402841270  ./today
2018-06-05+17:22:10.2070843560  ./yesterday
2018-05-30+20:22:29.9196086910  ./last week
2
ответ дан 7 June 2018 в 10:57

Команда ls не является наиболее подходящим инструментом для использования в этой ситуации, как показывают другие ответы. Существует сложный способ извлечь нужную информацию из вывода ls, хотя у нее есть ограничения. Это довольно хороший пример того, как можно быстро сработать с ls.

Конкретная проблема с этой цепочкой команд заключается в том, что использование команды tr удаляет любые множественные вхождения пробелов и заменяет с одним пробелом. Это повлияет на имена файлов, что делает их непригодными для разбора машиной.

ls -lrt| tail -4| tr -s ' '| cut -d ' ' -f6-| tac

Обратный порядок результатов ls с опцией -r используется, чтобы избежать вывода строки «Total» на -l опция ls и tac используется в конце для изменения порядка результатов после отсечения нежелательного вывода.

0
ответ дан 7 June 2018 в 10:57

Другие вопросы по тегам:

Похожие вопросы: