Программы
Как на Bash получить файлы, изменённые за сегодняшний день

Как на Bash получить файлы, изменённые за сегодняшний день

Bash имеет огромные возможности по программированию/скриптованию и администрированию операционной системы. Не важно: Linux это, FreeBSD, или MacOS – на Bash можно сделать многое.

Bash не всегда очевиден, но безусловно силён. Базовые концепции Unix-философии сделали написание скриптов и однострочников на нём сравнительно простым, а мощь программ – почти безграничной.

Но хватит пафоса, это лишь небольшой рецепт, в котором мы используем команду ls для получения списка файлов, однако, с параметром, о котором редко вспоминают: --time-style – получим вывод даты в удобном нам формате. А именно выполним следующую команду:

$ ls -al --time-style=+%D
total 122012
drwxrwxr-x  16 root   syslog  4096 11/27/19 .
drwxr-xr-x  14 root   root    4096 10/15/17 ..
-rw-r--r--   1 root   root       0 09/30/19 alternatives.log
-rw-r--r--   1 root   root     477 09/29/19 alternatives.log.1
-rw-r--r--   1 root   root     177 08/01/19 alternatives.log.2.gz
-rw-r--r--   1 root   root    3286 05/01/19 alternatives.log.3.gz
-rw-r--r--   1 root   root    1460 04/29/19 alternatives.log.4.gz
-rw-r--r--   1 root   root    3548 10/16/17 alternatives.log.5.gz
...

Так мы вывели дату последней модификации в американском стиле (MM/DD/YYYY). Теперь с помощью grep и date мы отфильтруем файлы, которые принадлежат именно к текущей дате:

$ ls -al --time-style=+%D | grep $(date +%D)
drwxrwxr-x  16 root   syslog              4096 11/27/19 .
drwxr-xr-x   2 root   root                4096 11/27/19 atop
-rw-r-----   1 syslog adm              2232669 11/27/19 auth.log
-rw-rw----   1 root   utmp            40578048 11/27/19 btmp
-rw-rw-r--   1 root   utmp              292292 11/27/19 lastlog
drwxr-xr-x   2 root   adm                 4096 11/27/19 nginx
-rw-r--r--   1 root   root                   0 11/27/19 popularity-contest.0
-rw-r--r--   1 root   root               33740 11/27/19 popularity-contest.new
-rw-r-----   1 syslog adm                34597 11/27/19 syslog
-rw-r-----   1 syslog adm              1027129 11/27/19 syslog.1
-rw-rw-r--   1 root   utmp                6528 11/27/19 wtmp

Но это только файлы за сегодня в текущей директории. Теперь добавим рекурсивный обход текущей директории, чтобы сделать ls -la на все файлы, что содержатся в текущей папке и подпапках:

find . -type f -print \
  | xargs ls -al --time-style=+%D \
  | grep $(date +%D)

С помощью find получаем список всех файлов, включая файлы поддиректорий. А xargs передаёт их аргументами нашей команде ls.

Если же вас не устраивает такой вывод столбиком с кучей лишних данных, а нужны только названия файлов – используем небольшую программку на awk:

find . -type f -print \
  | xargs ls -al --time-style=+%D \
  | grep $(date +%D)
  | awk 'BEGIN {FS="[ \t]+|\\|"} {print $7}'

– плюсом ко всему перечисленном ещё и делим по пробельным символам и выводим 7-ой столбец, где и находится имя файла.

Также может быть вам интересно:

Как установить часовой пояс в Linux

В рамках первичной настройки Операционной Системы важно установить и по какому времени вы живёте, ведь при следующем обновлении времени через Интернет ваше время слетит.

Читать »

Зачем писать "hello world"?

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

Читать »
Фото Python: Встроенные типы данных (list, set, dict, etc)

Python: Встроенные типы данных (list, set, dict, etc)

В Python есть множество встроенных типов данных. Их использование значительно упрощает жизнь и ускоряет разработку программных продуктов.

Фото Python: типы данных, переменные, логическое ветвление и циклы

Python: типы данных, переменные, логическое ветвление и циклы

Первая часть заметок о Python. О базовых типах, переменных, ветвлении и циклах.

Фото Как установить PostgreSQL на Linux и создать базу и пользователя

Как установить PostgreSQL на Linux и создать базу и пользователя

PostgreSQL - система управления базой данных общего назначения. Одна из самых распространённых баз данных, используемая на многих коммерческих и некоммерческих проектах.

Фото Как сделать свою middleware в Django (с примерами)

Как сделать свою middleware в Django (с примерами)

Middleware или "промежуточное программное обеспечение" - элегантный способ установить общие правила обработки запросов и ответов приложения. Давайте напишем парочку middleware, чтобы понять, как они работают.

Фото Новый синтаксис старой команды with в Python 3.10

Новый синтаксис старой команды with в Python 3.10

Как же долго моё чувство прекрасного страдало… Но в Python 3.10 появился новый парсер синтаксических конструкций Python!

Фото Добавляем постраничную пагинацию на Django сайт

Добавляем постраничную пагинацию на Django сайт

На сайтах часто встречаются многостраничные объекты: список товаров, список заметок и т.д. Поэтому важно уметь добавить навигацию по страницам на Django-проекте.

Фото Новый оператор match-case в Python

Новый оператор match-case в Python

В новой версии Python (3.10) появится новый оператор. Новый оператор сопоставления по шаблону (match-case).

Фото Нет слов, одни... однострочники

Нет слов, одни... однострочники

На днях вышел пост со списком полезных однострочников для JavaScript программистов. Памятуя Perl-овую молодость, заглянул туда.