копирование и архивирование файлов по дате в BASH

Есть папка directory, в которой лежат файлы:

  • file1.ogg (дата создания 01.08);
  • randomfile2.ogg (дата создания 10.08);
  • filename3.ogg (дата создания 15.08).

Хочу написать скрипт, который по команде:

sh tar_by_date.sh directory/ '08.08' '28.08' # (путь, начальная дата, конечная дата)

Создаёт архив directory.tar.gz из указанной папки с файлами, у которых дата создания входит в указанный промежуток

Какими командами и как правильно пользоваться?


Ответы (1 шт):

Автор решения: Pak Uula
$ tar cfz archive.tar.gz `find -type f -newermt 2021-05-30 -not -newermt 2021-06-15`

Команда создаст архив из файлов, которые модифицированы после 2021-05-30, но не позже чем 2021-06-15.

Команда find поддерживает несколько видов предикатов "новее чем". Кроме того есть возможность задать относительный возраст "старше, чем несколько дней назад"

Варианты форматов даты описаны в документации date.

→ Ссылка