У меня есть несколько файлов журналов, и я хотел бы сохранить только последние 3 (N) файла, самые последние. Как вы делаете это в Bash элегантно?
У меня есть этот скрипт, но он довольно длинный.
Файлы могут быть что-то вроде:
my-file-pattern.log.2019-10-01
my-file-pattern.log.2019-10-02
my-file-pattern.log.2019-10-03
and so on
Мой скрипт:
#!/bin/bash
function keepLastNOnly(){
local WORKDIR="$1"
local PATTERN="$2"
local MAX=$3
cd $WORKDIR
COUNT=$(ls -t $WORKDIR | grep $PATTERN|wc -l|grep -o -E '[0-9]+')
while [ $COUNT -gt $MAX ]; do
local TODEL=$(ls -t $WORKDIR | grep $PATTERN |tail -n 1)
rm -rf "$TODEL"
COUNT=$(ls -t $WORKDIR | grep $PATTERN|wc -l|grep -o -E '[0-9]+')
done
}
keepLastNOnly "/MyDirectory/" "my-file-pattern.log" 3
Есть более короткий путь?