У меня есть довольно простой скрипт, который я хотел бы написать, просто используя bash.
Имеется папка с файлами 0..N * .XML; Я хочу отсортировать их по имени и удалить файлы N-10 ( оставить последние 10 на месте ).
Я возился с находкой и хвостом / головой, но никак не мог понять
find /mnt/user/Temporary/1 -name *.xml | tail -n +10 | rm
Пожалуйста, прочитайте. Речь идет о сохранении последних 10. Если имеется 10 или менее файлов, ни один из них не должен быть удален!
EDIT:
Поскольку кто-то закрыл, но не ответил на вопрос, вот решение для тех, кто попадает сюда с тем же вопросом.
#!/bin/bash
files=()
while IFS= read -r -d $'\0'; do
files+=("$REPLY")
done < <(find . -name *.xml -print0 | sort)
Limit=$((${#files[@]}-10))
count=0
while [ $Limit -gt $count ]; do
rm "${files[count]}"
let count=count+1
done
Может быть, какой-нибудь linux "pro" может оптимизировать его или дать ему некоторые параметры (например, лимит, путь и шаблон файла), чтобы он мог вызываться где угодно.