LINUX.ORG.RU

как найти «самую свежую» директорию ...

 , ,


1

2

Приветствую.

Может кто решал вопрос: «поиск самой свежей» директории и удаление остальных. Штука в том, что может быть и одна поддиректория - тогда пусть лежит, но если 2 и более - оставить надо директорию, что является самой последней, а остальные удалить. Сами директории могут иметь разницу как в несколько часов, так и в несколько месяцев.

Возможно это реализовать на bash?


find . -type d -exec stat -c $'%Y\t%n' {} + | sort -n | cut -f2 | head -n -1 | rm -rf

не проверял. в текущей директории удалит все директории с их содержимым, кроме самой «свежей» директории. с ходу возможна проблема, когда самая свежая находится уровнем ниже от той что старше и она будет тоже удалена)) тут без более четкой формулировки задачи не обойтись.

nerve ★★
()

find ищет каталоги, печатает время модификации каталога (%As) и имя каталога. Можно через stat печатать время модификации (%Y)

sort + cut

все кроме последнего можно получить через head

Только на bash без других программ будет чуть сложнее.

В цикле: ищем каталог, потом ищем другой каталог, который новее первого (через test -nt). Если такой есть, то удаляем первый каталог, иначе заканчиваем работу.

vel ★★★★★
()

Я когда-то решал задачу поиска последнего файла, который подвергся изменениям. Очень хотелось понять какие файлы модифицирует KDE, когда я в System Settings проставляю определённые галочки.

Привожу команду как есть, рабочая на 100%. Сможешь адаптировать под свою задачу?

$ find .kde4 .config .local -type f -mtime 0 -printf "%T@ %TX - %h/%f\n" | sed s/.0000000000//g | sort -r | head
Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 3)

Если там только директории, у них в именах нет пробелов и они начинаются не с точек, то

rm -Rf `ls --sort=time | tail -n +2`

не надо ужасаться длинному списку условий, он вполне реалистичен если надо просто почистить например старые бекапы, имена которых ты сам выбирал

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)