Файл редактирования Bash и сохраняет последним 500 строк

Я надеюсь создавать задание крона, которое открывает каталог циклы через все журналы, которые я создал, и удаляет все строки, но сохраните последние 500, например.

Я думал о чем-то вроде

tail -n 500 filename > filename

Это работало бы?

Я также не уверенный, как циклично выполниться через каталог в ударе.

6
задан Nakilon 8 April 2016 в 11:10
поделиться

3 ответа

Подумайте об использовании logrotate .
Он не будет делать то, что вы хотите (удалить все строки, кроме последних 500), но он может позаботиться о файлах журнала, которые больше определенного размера (обычно путем сжатия старых и их удаления в какой-то момент). Должен быть широко доступен.

5
ответ дан 8 December 2019 в 05:20
поделиться
DIR=/path/to/my/dir # log directory
TMP=/tmp/tmp.log # temporary file
for f in `find ${DIR} -type f -depth 1 -name \*.log` ; do
  tail -n 500 $f > /tmp/tmp.log
  mv /tmp/tmp.log $f
done
1
ответ дан 8 December 2019 в 05:20
поделиться

В bash вы перебираете файлы в каталоге, например например:

cd target/directory

for filename in *log; do
    echo "Cutting file $filename"
    tail -n 500 $filename > $filename.cut
    mv $filename.cut $filename
done
0
ответ дан 8 December 2019 в 05:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: