warlinx
@warlinx

Как очистить большой файл в Linux?

Какие могут быть возможные варианты очистки огромного файла в Линукс, допустим там несколько ГБ накопилось данных? Доступим, это лог или еще что-то.
Без пересоздания
Без удаления самого файла
  • Вопрос задан
  • 1787 просмотров
Решения вопроса 3
caramingo
@caramingo
админ из русского манчестера
Если кто то пишет в этот файл и мне нужно его очистить обычно делаю так
> /путь/logfile.log
Если что эта команда сотрет ВСЕ в файле!
Ответ написан
smorman
@smorman
When In Rome do as The Romans do...
Выше Dmitriy Loginov правильно дал команду, но чуть добавлю свои 5 копеек, т.к. такой вариант считается более кашерным:

sudo bash -c '>/путь/logfile.log'

или с двойными кавычками, что иногда необходимо в скриптах или комбинациях команд:

sudo bash -c ">/путь/logfile.log"

Чистит до нуля файл любого размера и любого расширения...
Например файл видоса:

sudo bash -c '>/путь/vidos.avi'
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Можно вот так почистить с сохранением последних 100 строк:
LOG=$(tail -n100 file) && echo "$LOG">file

а так по сути любое перенаправление ">" перезапишет содержимое файла не меняя его inode.
echo "" > file

Из команд -
truncate -s BYTES file
но оно обнуляет с начала файла, то есть -s 0 имеет смысл, остальные размеры обычно не имеют смысла для лог файлов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@y_u_h
чтобы размер был нулевым echo "" не подходит - в rhel размер 1 байт показывает - один символ переноса строки создаётся в файле.
А вот cat /dev/null > my_file.txt обнуляет в ноль, что называется, рамер нулевой получается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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