5 способов очистить или удалить содержимое большого файла в Linux

Иногда, работая с файлами в терминале Linux, вы можете захотеть очистить содержимое файла, не открывая его обязательно с помощью редакторов командной строки Linux. Как этого добиться? В этой статье мы рассмотрим несколько различных способов очистки содержимого файла с помощью некоторых полезных команд.

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

С учетом сказанного ниже приведены способы очистки содержимого файла из командной строки.

Важно : для целей этой статьи мы использовали файл access.log в следующих примерах.

1. Очистить содержимое файла путем перенаправления на Null

Самый простой способ очистить содержимое файла с помощью перенаправления оболочки null (несуществующий объект) в файл, как показано ниже :

 #> access.log 

Пустой большой файл с использованием Null Перенаправление в Linux

2. Пустой файл с использованием перенаправления команды true

Здесь мы будем использовать символ : – это встроенная команда оболочки, которая по сути эквивалентна команде true и может использоваться как безоперационная (без операции).

Другой Метод заключается в перенаправлении вывода встроенной команды : или true в файл следующим образом:

 #:>  access.logOR # true> access.log 

Очистить большой файл с помощью команд Linux

3. Пустой файл Использование утилит cat/cp/dd с/dev/null

В Linux устройство null в основном используется для отбрасывания нежелательных выходных потоков процесса , или как подходящий пустой файл для входных потоков. Обычно это выполняется с помощью механизма перенаправления.

Поэтому файл устройства /dev/null является специальным файлом, который записывает (удаляет) любой ввод, отправленный на он или его вывод такие же, как и у пустого файла.

Кроме того, вы можете очистить содержимое файла, перенаправив на него вывод /dev/null (файл) в качестве ввода с помощью команды cat:

 # cat/dev/null> access.log 

Очистить файл с помощью команды cat

Затем мы будем использовать команду cp для очистки содержимого файла, как показано.

 # cp/dev /null access.log 

Очистить содержимое файла с помощью команды cp

В следующей команде if означает входной файл, а of относится к выходному файлу.

 # dd if =/ dev/null of = доступ. log 

Очистить содержимое файла с помощью команды dd

4. Очистить файл с помощью команды echo

Здесь вы можете использовать команду echo с пустой строкой и перенаправить ее в файл следующим образом:

 # echo ""> доступ  .logOR # echo> access.log 

Очистить файл с помощью команды echo

Примечание . Помните, что пустая строка не то же самое, что и null. Строка уже является объектом, поскольку она может быть пустой, тогда как null просто означает отсутствие объекта.

По этой причине, когда вы перенаправляете команду out of echo выше в файл, и просмотрите содержимое файла с помощью команды cat, он печатает пустую строку (пустую строку).

Чтобы отправить нулевой вывод в файл, используйте флаг -n , который сообщает echo не выводить завершающую новую строку, которая ведет к пустой строке, созданной в предыдущей команде.

 # echo -n ""> доступ.  log 

Пустой файл с нулевым перенаправлением

5. Очистить файл с помощью команды усечения

Команда truncate помогает уменьшить или увеличить размер файла до определенного размера.

Вы можете использовать его с параметром -s , который указывает размер файла. Чтобы очистить содержимое файла, используйте размер 0 (ноль), как в следующей команде:

 # truncate -s 0 access.log 

Обрезать содержимое файла в Linux

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

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


Есть ли способ очистить половину файла вместо полной очистки?

Полная очистка:

 #> file # cat/dev/null> file 

Предположим, мне нужен файл с последним 10 дней журналов и возможность удаления/очистки старше 10 дней (я не хочу архивировать этот файл и заменять новый файл для свежих журналов), могу ли я очистить половину файла в файле?

Ответить


@Vinod

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

Ответ


Уважаемые, у меня есть файл журнала, в котором у меня есть журналы за 3 месяца, как я могу просто сохранить журнал за последние 30 дней и остаток для удаления. Как это сделать?

Как указать это условие, если размер файла журнала увеличивается на 2 ГБ, а затем очищаются данные месячной давности ..

Ответ


@shujauddin Qureshi,

Вам нужно будет сделать это через задание cron. ты знаком с cron? Вы должны написать сценарий, сохранить его где-нибудь, а затем запустить его через cron.

Сценарий должен обрабатывать логику разбора файла на строки, анализировать дату в каждой строке, а затем отбросьте строки с датой старше 30 дней.

Ответ


Как удалить содержимое (файлы и каталоги) в одной папке за один раз.

 # cp/dev/null/filefolder/Many files. # echo '' ' 

Проблема заключается в том, что файл автоматически создается или удаляется (динамический файл создается)

Ответ

Я знаю, что > и :> - это методы, которые очищают файл без фактического «касания» это, если файл уже используется.

Остальные методы работают так же? Мы всегда получаем билеты для больших файлов, и в 80% случаев нам нужно сжать содержимое файла и усечь или «обнулить» его, но проблема заключается в том, что файл уже используется, и мы не можем остановить процесс, использующий его. .

На данный момент я использовал только методы перенаправления, упомянутые в начале моего сообщения.

Ответ

@Lokiyo,

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

Ответ

Когда я открыл эту ссылку, я ожидал способов фактически избавиться от содержимого файла на диске. Все эти методы только отключают дисковое пространство от файла, оставляя содержимое на диске.
Однако из перечисленных вариантов я думаю, что «truncate -s 0» - лучший вариант.

Ответить

Система опустила слово «файл» в конце команды усечения, потому что я поместил его в знаки lt и gt.

Ответ

@James

Существуют и другие методы полного удаления содержимого файла с диска, такие как команда shred и некоторые другие. Вскоре мы создадим практическое руководство по этой теме.

Ответ

Другой простой вариант с использованием команды cat:
cat>/path/to/file
Затем нажмите Ctrl + D
Вуаля, пустой файл.

Ответьте

@Mike

Большое спасибо за полезные совет, это тоже очень просто.

Ответьте

все трюки с перенаправлением «>» одинаковы!

> file
:> файл
true> файл
cat/dev/null> файл
my_prog> файл (если my_prog не выводит результат)

, потому что оболочка обрезать (или создать) «файл» перед запуском команды (cat, true,…), наиболее важным является то, что команда не выводит ничего !!!

вы можете понять, что> file - это лучший, потому что для него не нужна другая программа!

Ответ

@Bruno

Это правда, основная идея заключается в использовании механизма перенаправления. Мы просто предлагаем различные альтернативы, которые пользователь может выбрать для использования, хотя они больше похожи на одинаковые.

Ответить
Оцените статью
futurei.ru
Добавить комментарий