Я бы не рекомендовал анализировать вывод ls
, поскольку он неправильно форматирует вывод для передачи в новую команду и имеет проблемы с переносимостью.
Я бы попробовал вместо этого что-нибудь вроде этого
find $bkup_p/mysql.daily/ -type f -a -mtime +7 -a -name "*.sql" -a -exec rm -f {} +
примечание:
"*. Sql"
измените это по необходимости -mtime +7
означает * если этот файл был изменен более (+) 7 дней назад, очевидно, измените и это по мере необходимости В случае, если вы хотите быть уверены, что у вас всегда есть 10 самых новых файлов - несмотря ни на что (и у вас есть GNU find
) вы можете попробовать
find $bkup_p/mysql.daily/ -maxdepth 1 -type f -a -printf "%T+\t%p\n" | sort -r | sed -n '10,$p' | awk '{print $2}' | xargs rm -f
для получения дополнительной информации о форматировании find
вывода с помощью оператора -printf
, см.
man find | less '+/^\s*-printf'