Как увидеть строки, столбец даты которых меньше x дня от сегодняшнего дня

С моей точки зрения, есть как минимум 3 способа решить ваш вопрос:

  1. Не используйте учетную запись root в первую очередь. Действительно. Настроить отдельно только vim для root и все. sudo - ваш лучший друг. В качестве бонуса вы улучшили ведение журнала всех ваших корневых действий и всей истории команд в одном месте. Можно комбинировать с опцией 2.

  2. Поместите всю вашу конфигурацию в доступный или что-то подобное. Настройте его для развертывания в / root и в домашнем каталоге пользователя. Если вам нужно что-то изменить, просто измените проект конфигурации и разверните. Он будет развернут сразу во всех каталогах. В качестве бонуса у вас есть вся конфигурация в одном месте, которую можно легко расширить для любого количества пользователей. Если вы поместите его в git или другую VCS, у вас будет хорошая история изменений. Кроме того, его можно легко перенести на новую машину. Можно комбинировать с вариантом 1. Я считаю, что это будет лучшее решение.

  3. Честно говоря, мне не нравится это решение, хотя оно очень простое. Так что все же стоит упомянуть. Сделайте задание cron, чтобы скопировать всю конфигурацию из / root / в дом вашего пользователя (перезаписать файлы и каталоги, если они существуют). Не настраивайте его наоборот, так как это будет крайне плохо для вашей безопасности (даже если вы единственный пользователь машины). Кто знает, что умеет скачивать ваш браузер?

0
09.12.2015, 05:21
1 ответ

Я предположил, что когда вы сказали X дней меньше, чем сегодня, вы имели в виду файлы "старше 5 дней". Если вы имеете в виду файлы ровно 5 дней, то приведенный ниже скрипт нужно будет изменить, чтобы опустить отметку времени, а -lt можно заменить на -eq

#!/bin/bash

CUTOFF=$(date +%s -d "5 days ago")

while read p; do
   time=$(echo $p | awk -F'[ ,]' '{print $2" "$3}')
   epoch_time=$(date --date="$time" +%s) 

   if [ $epoch_time -lt $CUTOFF ]; then
   echo $p
   fi;
done <response.txt

Приведенный выше скрипт загружает файл response.txt и перебирает каждую строку в файле. Awk разбирает по пробелам и запятым в отдельные колонки, а затем печатает дату и время. После этого (вероятно, это можно сделать в той же строке), он преобразует дату/время в эпохальное время в секундах. После этого просто сравнивается время отсечки в секундах с временем файла с помощью оператора if.

Вышеописанное выведет только файлы старше 5 дней.

0
29.04.2021, 00:20

Теги

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