@Lexaband

Можно ли на bash сделать так, и если да то как?

Нужен bash скрипт, который для всех файлов во временной директории, которые были созданы за текущий месяц и не изменялись в течении недели при нахождении в них строки test поменяет ее на tset.
Помогите пожалуйста. Хочу понять суть.
  • Вопрос задан
  • 386 просмотров
Пригласить эксперта
Ответы на вопрос 3
romy4
@romy4
Exception handler
ну здесь однозначно find с его параметрами поиска и -exec
Ответ написан
Комментировать
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Суть очень простая.
Взять текущую дату, высчитать диапазон равный неделе (date это умеет)
Найти все файлы с датой создания такой-то и датой изменения не больше такой-то (это умеет find)
И для каждого из них выполнить поиск-и-замену (это умеет sed), ну для эстетства можно сначала grep нужной строки, если нет, sed не вызывать.

bash тут нужен собственно только чтобы все это в кучку свести.
Ответ написан
Комментировать
shambler81
@shambler81 Куратор тега Linux
В общем это не возможно!!! ;(
Как минимум поскольку файловая система не хранит времени создания ;((((((

Доступно только
Changed:
Moduvied:
Accessed:

Как мы видим как ни странно создания тут нет.

Тем не менее что мы можем сделать:

find . -type f -mtime -7 -exec sed -i 's/test2/test21/g' "{}" \;


find . ищем от текущей папки и ниже рекурсивно.
-type f только файлы
-mtime -7 Измененые последние семь дней.
-exec Команда {}" \; выполнить команду с найденым файлом (цикл)
sed -i 's/test2/test21/g - найти строчку test и заменить ее на test21

Опишите какую вы задачу пытаетесь решить, скорее всего вам нужно что-то другое.
Так же посмотрите на patch или diff сложнее но точно устроит git
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы