Как обрезать файлы до нулевого размера в Linux
Как обрезать файлы до нулевого размера в Linux
How to Truncate (Empty) Files in Linux
В этом руководстве объясняется, как обрезать файлы до нулевого размера в системах Linux с помощью перенаправления оболочки и truncate команды.

В некоторых ситуациях может потребоваться усечь (очистить) существующий файл до нулевой длины. Проще говоря, усечение файла означает удаление содержимого файла без удаления файла.
Усечение файла происходит намного быстрее и проще, чем удаление файла , его воссоздание и установка правильных прав доступа и владельца . Кроме того, если файл открывается процессом, удаление файла может привести к сбою в работе программы, которая его использует.
Shell Redirection
Самый простой и наиболее используемый метод для усечения файлов - это использование > -
оператора перенаправления оболочки.
Общий формат для усечения файлов с использованием перенаправления:
: > filename
Давайте разберем команду:
- В
:
средстве толстой кишкиtrue
и не производит никакого вывода. - Оператор
>
перенаправления перенаправляет вывод предыдущей команды в указанный файл. filename
, файл, который вы хотите усечь.
Если файл существует , он будет обрезан до нуля. В противном случае файл будет создан.
Вместо :
можно также использовать другую команду, которая не выдает никаких результатов.
Вот пример использования cat
команды для вывода содержимого /dev/null
устройства, которое возвращает только символ конца файла:
cat /dev/null > filename
Еще одна команда, которая может быть использована
echo
. -n
Опция говорит echo
не для добавления новой строки:echo -n > filename
В большинстве современных оболочек, таких как Bash или Zsh, вы можете опустить команду перед символом перенаправления и использовать:
> filename
Чтобы иметь возможность обрезать файл, вам необходимо иметь права на запись в файл. Обычно вы бы использовали
sudo
для этого, но привилегии суперпользователя не применяются к перенаправлению. Вот пример:sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied
Есть несколько решений, которые позволяют перенаправлять с sudo
. Первый вариант может запустить новую оболочку с помощью sudo и выполнить команду внутри этой оболочки, используя -c
флаг:
sudo sh -c '> filename'
Другой вариант - передать вывод в
tee
команду, повысить tee
привилегии sudo
и записать пустой вывод в заданный файл:: | sudo tee filename
truncate
команда
truncate
утилита командной строки, которая позволяет уменьшить или расширить размер файла до заданного размера.
Общий синтаксис для усечения файлов до нулевого размера с помощью truncate
команды, выглядит следующим образом:
truncate -s 0 filename
-s 0
Параметр задает размер файла до нуля.
Например, чтобы очистить журнал доступа Nginx, вы должны использовать:
sudo truncate -s 0 /var/log/nginx/access.log
Очистить все файлы журнала
Со временем ваш диск может загромождаться большим количеством больших файлов журнала, занимающих много места на диске.
Следующая команда очистит файлы, заканчивающиеся на «.log» в /var/log
каталоге:
sudo truncate -s 0 /var/log/**/*.log
Лучшим вариантом будет вращение, сжатие и удаление файлов журналов с помощью logrotate
инструмента.
Вывод
Чтобы обрезать файл в Linux, используйте оператор перенаправления, >
за которым следует имя файла.