Bash-скрипт сортировка последних файлов
Задача:
Скрипт должен принимать обязательный параметр <PATH_TO_DIR>
В директории PATH_TO_DIR выбирать 3 последних файла, по дате изменения, но не старше 7 дней.
Мой скрипт:
#!/bin/bash
dir=$1
last=`find $dir -type f -mtime -7`
mv $last /test
хочу переместить 3 последних файла в директорию /test как мне дополнить скрипт, чтобы была сортировка по трем последним файлам в параметре path_to_dir?
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
find отыскивает все не старые файлы в директории и печатает их время и полный путь. sort сортирует строки по времени. head отбирает три самых свежих файла. cut убирает время из строк:
#!/bin/bash
last=`find $1 -maxdepth 1 -type f -mtime -7 -printf "%T@\t%p\n" | sort -nr | head -3 | cut -f "2-"`
mv $last /test
Форматная строка в printf:
%T@ - время обновления файла в виде вещественного числа в секундах; \t - табуляция (разделитель между временем и именем файла); %p - путь к файлу файла; \n - перевод строки.
Больше подробностей в man find.