Скрипты Bash: удаление самого старого каталога - PullRequest
6 голосов
/ 31 августа 2010

Я хочу найти самый старый каталог (внутри каталога) и удалить его.Я использую следующее:

rm -R $(ls -1t | tail -1)

ls -1t | tail -1 действительно дает мне самый старый каталог, проблема в том, что он не удаляет каталог, а также в нем перечислены файлы.

Как я могу это исправить?

Ответы [ 4 ]

5 голосов
/ 31 августа 2010
rm -R "$(find . -maxdepth 1 -type d -printf '%T@\t%p\n' | sort -r | tail -n 1 | sed 's/[0-9]*\.[0-9]*\t//')"

Это также работает с каталогом, имя которого содержит пробелы, табуляции или начинается с "-".

4 голосов
/ 31 августа 2010

Это не красиво, но работает:

rm -R $(ls -lt | grep '^d' | tail -1  | tr " " "\n" | tail -1)
0 голосов
/ 31 августа 2010

<code>
find directory_name -type d -printf "%TY%Tm%Td%TH%TM%TS %p\n" | sort -nr | tail -1 | cut -d" " -f2 | xargs -n1 echo rm -Rf
Вы должны убрать эхо перед rm, если оно дает правильные результаты
0 голосов
/ 31 августа 2010
rm -R $(ls -tl | grep '^d' | tail -1 | cut -d' ' -f8)
...