08 июля 2021

Очистка содержимого файла (ов) с любым расширением до нуля байт в Терминале в Linux

Очень часто, у пользователей возникает необходимость радикальных действий по очистке системы, в виду разростания разного рода .log-файлов, файлов системных жураналов, ненужных разного рода видео-файлов, аудио-файлов и мн. др.
В этой небольшой статье мы с вами на примерах будем не удалять, а чистить файлы до нуля байт через Терминал.

Есть конечно графические утилиты, такие например, как BleachBit и др., но, всё же, все эти утилиты радикально удаляют файлы с носителя, а это в свою очередь огромная нагрузка на ФС, особенно носителей SSD.
Поэтому мы с вами и рассмотрим один из способов такой, щадящей чистки, без радикального удаления файла (ов) из системы до нуля байт.

Например, у нас в папке Видео есть не нужный нам более видео-файл test.mkv размером 8.6 Гб и мы с вами попробуем его не удалить, а очистить до нуля байт.
Для выполнения такой очистки нам с вами понадобится Терминал, вызвать который можно на клавиатуре сочетанием клавиш клавиатуры Ctrl+Alt+T, что мы с вами и делаем и после его открытия, для начала, убедимся, что файл такой есть и он действительно размером 8.6 Гб.

Проверяем наличие данного файла и его размер, введя следующую команду/код и жмём на Enter:
ls -lh Видео/t*t.mkv
(почему в команде/коде файл прописан в виде t*t.mkv? Просто я хочу показать вам, как можно отсеять совпадения, если в папке есть ещё файлы с таким именем. Можно писать и полностью test.mkv, и частично указав совпадение *t.mkv/t*.mkv/*.mkv и т.д. и т.п.)

и получаем вывод, подтверждающий наличие такого файла и его размер:
Теперь можно проводить его очистку, введя следующую команду/код:
bash -c '> Видео/t*t.mkv'

После её выполнения вновь проверяем наличие файла и его размер командой/кодом:
ls -lh Видео/t*t.mkv

и получаем такой вывод, показывающий нам, что файл вроде бы есть, но его размер 0 Байт:
И если мы с вами проверим его размер в графическом режиме, в Файловом менеджере, то также увидим, что размер файла 0 Байт:
Т.е., мы с вами достигли нужного результата, а именно очистили огромный файл, быстро и легко через Терминал без его радикального удаления.

Таким способом можно чистить любые файлы, как по отдельности, так и несколько файлов одновременно, последовательно перечисляя в команде/коде имёна файлов с их расширениями и пути к ним, и, если один из файлов будет расположен в системной папке, то в начале команды/кода уже надо обязательно писать sudo.

Давайте посмотрим с вами один пример очистки сразу нескольких файлов, с разными расширениями, один из которых будет находится в домашнем каталоге Пользователя, а два других в системной папке.
Допустим у нас с вами есть тот же видео-файл test.mkv размером 8.6 Гб в папке Видео, лог-файл test.log размером 5.7 Мб в системной папке /var/log и ISO-образ test.iso размером 2.7 Гб, также в системной папке /opt/test.

Давайте мы с вами проверим, что эти файлы действительно есть и проверим их размер, командой/кодом:
ls -lh Видео/t*t.mkv /var/log/test.log /opt/test/test.iso

и получим вывод, подтверждающий нам, что файлы такие есть, а также размер файлов:
Теперь мы с вами очистим файлы до нуля байт каждый, введя следующую команду/код:
sudo bash -c '> Видео/t*t.mkv > /var/log/test.log > /opt/test/test.iso'

После выполнения команды/кода снова проверяем наличие файлов и их размер командой/кодом:
ls -lh Видео/t*t.mkv /var/log/test.log /opt/test/test.iso

и получаем вывод Терминала, показывающий нам, что файлы есть, но размер каждого 0 Байт:


Выводы:
Таким способом можно очищать файлы любого размера, любого расширения, в любом месте в системе, по одному или группами, до нуля байт, без радикального их удаления.

Также такие команды/коды, как для одного файла, так и для групп файлов можно заносить в Планировщик заданий Cron, или в таймеры Systemd (о них мы с вами в ближайшее время и поговорим подробнее в отдельной статье), для систематической чистки файлов по расписанию, установленному вами по вашему усмотрению.

А Вы какие способы очистки (не удаления!) файлов до нуля байт знаете?

Делитесь своими способами с нашими читателями в комментариях под статьёй или на нашем форуме, в соответсвтующей теме (ссылка ниже).


P.S. Если у вас появились вопросы или мнения по данной статье, обсудить их можно на нашем форуме:

5 комментариев :

  1. велосипедненько, есть же truncate? ну или хотя бы cat /dev/null > file.log

    ОтветитьУдалить
    Ответы
    1. Есть! Спору нет.
      В статье один из способов и кстати, один из самых кашерных среди Линуксятников.

      Делитесь своим способом подробно, чтобы читатели видели, как это можно сделать.

      Удалить
    2. уточняю!...не линуксятников а Линуксоидов! А в Мире есть подобное только под названием "виндузятники"!

      Удалить
  2. Нет такого файла или каталога

    ОтветитьУдалить
  3. Всё гениальное ПРОСТО и все простое ГЕНИАЛЬНО!!! Создание внешнего загрузочноко накопител это очень легко ДОКАЖЕТ!!!

    ОтветитьУдалить