- 5 способов очистить или удалить содержимое большого файла в Linux
- 1. Очистить содержимое файла путем перенаправления на Null
- 2. Пустой файл с использованием перенаправления команды true
- 3. Пустой файл Использование утилит cat/cp/dd с/dev/null
- 4. Очистить файл с помощью команды echo
- 5. Очистить файл с помощью команды усечения
- Как обрезать (очистить) файлы в Linux
- Перенаправление оболочки
- Команда truncate
- Очистить все файлы журнала
- Заключение
- Файлы в Linux
- Типы файлов в Linux
- Узнать расположение файла
- Создать сразу несколько файлов
- Как удалить файлы и каталоги в терминале Linux?
- Как удалить файлы с помощью rm
- Как удалить каталоги с помощью rm
- Как удалить каталоги с помощью rmdir
5 способов очистить или удалить содержимое большого файла в Linux
Иногда, работая с файлами в терминале Linux, вы можете захотеть очистить содержимое файла, не открывая его обязательно с помощью редакторов командной строки Linux. Как этого добиться? В этой статье мы рассмотрим несколько различных способов очистки содержимого файла с помощью некоторых полезных команд.
Внимание : прежде чем мы перейдем к рассмотрению различными способами, обратите внимание, что, поскольку в Linux все является файлом, вы всегда должны убедиться, что файл (ы), который вы очищаете, не являются важными пользовательскими или системными файлами. Очистка содержимого критически важной системы или файла конфигурации может привести к фатальной ошибке или сбою приложения/системы.
С учетом сказанного ниже приведены способы очистки содержимого файла из командной строки.
Важно : для целей этой статьи мы использовали файл access.log в следующих примерах.
1. Очистить содержимое файла путем перенаправления на Null
Самый простой способ очистить содержимое файла с помощью перенаправления оболочки null (несуществующий объект) в файл, как показано ниже :
Пустой большой файл с использованием Null Перенаправление в Linux
2. Пустой файл с использованием перенаправления команды true
Здесь мы будем использовать символ : — это встроенная команда оболочки, которая по сути эквивалентна команде true и может использоваться как безоперационная (без операции).
Другой Метод заключается в перенаправлении вывода встроенной команды : или true в файл следующим образом:
Очистить большой файл с помощью команд Linux
3. Пустой файл Использование утилит cat/cp/dd с/dev/null
В Linux устройство null в основном используется для отбрасывания нежелательных выходных потоков процесса , или как подходящий пустой файл для входных потоков. Обычно это выполняется с помощью механизма перенаправления.
Поэтому файл устройства /dev/null является специальным файлом, который записывает (удаляет) любой ввод, отправленный на он или его вывод такие же, как и у пустого файла.
Кроме того, вы можете очистить содержимое файла, перенаправив на него вывод /dev/null (файл) в качестве ввода с помощью команды cat:
Очистить файл с помощью команды cat
Затем мы будем использовать команду cp для очистки содержимого файла, как показано.
Очистить содержимое файла с помощью команды cp
В следующей команде if означает входной файл, а of относится к выходному файлу.
Очистить содержимое файла с помощью команды dd
4. Очистить файл с помощью команды echo
Здесь вы можете использовать команду echo с пустой строкой и перенаправить ее в файл следующим образом:
Очистить файл с помощью команды echo
Примечание . Помните, что пустая строка не то же самое, что и null. Строка уже является объектом, поскольку она может быть пустой, тогда как null просто означает отсутствие объекта.
По этой причине, когда вы перенаправляете команду out of echo выше в файл, и просмотрите содержимое файла с помощью команды cat, он печатает пустую строку (пустую строку).
Чтобы отправить нулевой вывод в файл, используйте флаг -n , который сообщает echo не выводить завершающую новую строку, которая ведет к пустой строке, созданной в предыдущей команде.
Пустой файл с нулевым перенаправлением
5. Очистить файл с помощью команды усечения
Команда truncate помогает уменьшить или увеличить размер файла до определенного размера.
Вы можете использовать его с параметром -s , который указывает размер файла. Чтобы очистить содержимое файла, используйте размер 0 (ноль), как в следующей команде:
Обрезать содержимое файла в Linux
На этом пока что, в этой статье мы рассмотрели несколько методов очистки или опустошения содержимого файла. с помощью простых утилит командной строки и механизма перенаправления оболочки.
Вероятно, это не единственные доступные практические способы сделать это, поэтому вы также можете сообщить нам о любых других методах, не упомянутых в этом руководстве, через отзывы раздел ниже.
Есть ли способ очистить половину файла вместо полной очистки?
Предположим, мне нужен файл с последним 10 дней журналов и возможность удаления/очистки старше 10 дней (я не хочу архивировать этот файл и заменять новый файл для свежих журналов), могу ли я очистить половину файла в файле?
Должен быть способ, но мы должны провести небольшое исследование по этому поводу, прежде чем мы сможем предложить вам решение.
Уважаемые, у меня есть файл журнала, в котором у меня есть журналы за 3 месяца, как я могу просто сохранить журнал за последние 30 дней и остаток для удаления. Как это сделать?
Как указать это условие, если размер файла журнала увеличивается на 2 ГБ, а затем очищаются данные месячной давности ..
Вам нужно будет сделать это через задание cron. ты знаком с cron? Вы должны написать сценарий, сохранить его где-нибудь, а затем запустить его через cron.
Сценарий должен обрабатывать логику разбора файла на строки, анализировать дату в каждой строке, а затем отбросьте строки с датой старше 30 дней.
Как удалить содержимое (файлы и каталоги) в одной папке за один раз.
Источник
Как обрезать (очистить) файлы в Linux
Усечение файла происходит намного быстрее и проще, чем удаление файла , его воссоздание и установка правильных прав доступа и владельца. Кроме того, если файл открывается процессом, удаление файла может вызвать сбой программы, которая его использует.
В этой статье объясняется, как обрезать файлы до нулевого размера в системах Linux с помощью перенаправления оболочки и команды truncate.
Перенаправление оболочки
Самый простой и наиболее используемый метод для усечения файлов – это использование оператора перенаправления > оболочки.
Общий формат для усечения файлов с использованием перенаправления:
Давайте разберем команду:
- : означает true и не производит никакого вывода.
- Оператор перенаправления > перенаправляет вывод предыдущей команды в указанный файл.
- filename, файл, который вы хотите усечь.
Если файл существует, он будет обрезан до нуля. В противном случае файл будет создан.
Вместо :можно также использовать другую команду, которая не выдает никаких результатов.
Вот пример использования catкоманды для вывода содержимого устройства /dev/null, которое возвращает только символ конца файла:
Еще одна команда, которая может быть использована echo. Опция -n говорит echo не для добавления новой строки:
В большинстве современных оболочек, таких как Bash или Zsh, вы можете опустить команду перед символом перенаправления и использовать:
Чтобы иметь возможность усекать файл, вам необходимо иметь права на запись в файл. Обычно вы бы использовали sudoдля этого, но привилегии суперпользователя не применяются к перенаправлению. Вот пример:
Есть несколько решений, которые позволяют перенаправлять с sudo. Первый вариант может запустить новую оболочку с помощью sudo и выполнить команду внутри этой оболочки, используя флаг -c:
Другой вариант – направить вывод в teeкоманду, повысить teeпривилегии sudoи записать пустой вывод в заданный файл:
Команда truncate
truncate это утилита командной строки, которая позволяет уменьшить или расширить размер файла до заданного размера.
Общий синтаксис для усечения файлов до нулевого размера с помощью truncateкоманды, выглядит следующим образом:
Параметр -s 0 задает размер файла до нуля.
Например, чтобы очистить журнал доступа Nginx, вы должны использовать:
Очистить все файлы журнала
Со временем ваш диск может загромождаться большим количеством больших файлов журнала, занимающих много места на диске.
Следующая команда очистит файлы, заканчивающиеся на «.log» в каталоге /var/log:
Лучшим вариантом будет вращение, сжатие и удаление файлов журналов с помощью инструмента logrotate.
Заключение
Чтобы обрезать файл в Linux, используйте оператор перенаправления >, за которым следует имя файла.
Если у вас есть какие-либо вопросы или замечания, пожалуйста, оставьте комментарий ниже.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Файлы в Linux
Типы файлов в Linux
В Linux всё является файлами и tty терминалы не исключение.
Или аналогичную команду
crw—w—-. 1 andrei tty 136, 1 Nov 19 12:43 /dev/pts/1
Первый символ — это тип файла.
Доступно семь типов файлов: обычные, директории, символьные, блоки, сокеты, именованые каналы, символьные ссылки
— : regular file
d : directory
c : character device file
b : block device file
s : local socket file
p : named pipe
l : symbolic link
Тип c означает character. То есть этот файл может принимать и показывать символы
drwxr-xr-x. 118 root root 8192 Nov 19 11:02 /etc
Видно, что тип файла d. То есть directory
Для просмотра дисков/блоков выполните
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 8G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 7G 0 part ├─centos-root 253:0 0 6.2G 0 lvm / └─centos-swap 253:1 0 820M 0 lvm [SWAP] sr0 11:0 1 57.7M 0 rom /run/media/andrei/VBox_GAs_6.1.10
brw-rw—-. 1 root disk 8, 0 Nov 19 11:02 /dev/sda brw-rw—-. 1 root disk 8, 1 Nov 19 11:02 /dev/sda1 brw-rw—-. 1 root disk 8, 2 Nov 19 11:02 /dev/sda2
Можно убедитсья, что тип файлов b. То есть block
? означает что должен быть один любой символ.
brw-rw—-. 1 root disk 8, 1 Nov 19 11:02 /dev/sda1 brw-rw—-. 1 root disk 8, 2 Nov 19 11:02 /dev/sda2
[12] означает что должен быть либо символ 1 либо символ 2
brw-rw—-. 1 root disk 8, 1 Nov 19 11:02 /dev/sda1 brw-rw—-. 1 root disk 8, 2 Nov 19 11:02 /dev/sda2
Когда вы хотите узнать версию системы вы можете выполнить
ls -l /etc/system-release
lrwxrwxrwx. 1 root root 14 Nov 17 13:44 /etc/system-release -> centos-release
Тип файла l означает link то есть это не настоящий файл, а ссылка
ls -l /etc/system-release /etc/centos-release /etc/redhat-release
-rw-r—r—. 1 root root 37 Oct 23 17:53 /etc/centos-release lrwxrwxrwx. 1 root root 14 Nov 17 13:44 /etc/redhat-release -> centos-release lrwxrwxrwx. 1 root root 14 Nov 17 13:44 /etc/system-release -> centos-release
/etc/centos-release — это настоящий (regular) файл а остальные — ссылки на него.
Если бы вы пользовались redhat то настоящим был бы redhat-release
Ещё один способ получить информацию о версии — выполнить lsb_release -d где -d означает description
Description: CentOS Linux release 7.9.2009 (Core)
Узнать расположение файла
Узнать где находится файл lsb_release можно командой which lsb_release. Чтобы сразу получить дополнительную информацию выполните
ls -lF $(which lsb_release)
-rwxr-xr-x. 1 root root 15929 Mar 27 2015 /usr/bin/lsb_release*
Опция -F означает показать тип файлов. Поэтому нам удалось увидеть * после lsb_release. * означает, что файл исполняемый.
Чтобы узнать откуда взялся файл можно воспользоваться командой rpm с опциями q (query) и f (file)
rpm -qf $(which lsb_release)
Чтобы скопировать файл в интерактивном режиме воспользуйтесь командой cp с опцией i (interactive)
interactive означает, что если файл с таким имененм существует, вас спросят прежде чем затирать его
cp -i /etc/hosts .
cp -i /etc/hosts .
cp: overwrite ‘./hosts’?
Чтобы создать директорию сразу же с поддиректорией внутри воспользуйтесь командлой mkdir с опцией p (parent)
mkdir -p sites/heiheiru
ls -l sites
total 0
drwxrwxr-x. 2 andrei andrei 6 Nov 19 13:40 heiheiru
Создать сразу несколько файлов
Чтобы создать одновременно несколько файлов с именами идущими по порядку выполните touch с <>
touch files/file <1..5>
ls -l files
-rw-rw-r—. 1 andrei andrei 0 Nov 19 13:46 file1 -rw-rw-r—. 1 andrei andrei 0 Nov 19 13:46 file2 -rw-rw-r—. 1 andrei andrei 0 Nov 19 13:46 file3 -rw-rw-r—. 1 andrei andrei 0 Nov 19 13:46 file4 -rw-rw-r—. 1 andrei andrei 0 Nov 19 13:46 file5
Чтобы скопировать директорию files в директорию sites со всем содержимым выполните
cp -R files sites
ls -l sites/files/
total 0 -rw-rw-r—. 1 andrei andrei 0 Nov 19 13:49 file1 -rw-rw-r—. 1 andrei andrei 0 Nov 19 13:49 file2 -rw-rw-r—. 1 andrei andrei 0 Nov 19 13:49 file3 -rw-rw-r—. 1 andrei andrei 0 Nov 19 13:49 file4 -rw-rw-r—. 1 andrei andrei 0 Nov 19 13:49 file5
Директория files была скопирована в директорию sites, то есть теперь у sites есть поддиректория files.
Если у вас установлен модуль tree вы можете наглядно изучить вложенность. Если нет — выполните сперва sudo yum install tree
sites └── files ├── file1 ├── file2 ├── file3 ├── file4 └── file5 1 directory, 5 files
Создать ссылку можно командой ln, символьную ссылку ln -s
Источник
Как удалить файлы и каталоги в терминале Linux?
Команды rm и rmdir удаляют файлы и каталоги в Linux, macOS и других Unix-подобных операционных системах. Они похожи на команды del и deltree в Windows и DOS. Эти команды очень мощные и имеют довольно много опций.
Важно отметить, что файлы и каталоги, удаленные с помощью rm и rmdir , не перемещаются в корзину. Они сразу же удаляются с вашего компьютера. Если вы случайно удалили файлы с помощью этих команд, вы сможете восстановить их только из резервной копии.
Как удалить файлы с помощью rm
Самый простой случай — это удаление одного файла в текущем каталоге. Введите команду rm, пробел, а затем имя файла, который вы хотите удалить.
Если файл не находится в текущем рабочем каталоге, укажите путь к местоположению файла.
Вы можете передать более одного имени файла в rm. При этом удаляются все указанные файлы.
Подстановочные знаки могут использоваться для выбора групп файлов, которые будут удалены. Знак * представляет несколько символов, а символ ? представляет один символ. Эта команда удалит все файлы изображений png в текущем рабочем каталоге.
Эта команда удалит все файлы с одним символьным расширением. Например, это удалит File.1 и File.2, но не File.12.
Если файл защищен от записи, вам будет предложено удалить файл. Вы должны ответить с помощью y или n и нажать «Enter».
Чтобы снизить риск использования rm с подстановочными знаками, используйте параметр -i (интерактивный). Для этого необходимо подтвердить удаление каждого файла.
Опция -f (сила) противоположна интерактивной. Он не запрашивает подтверждение, даже если файлы защищены от записи.
Как удалить каталоги с помощью rm
Чтобы удалить пустой каталог, используйте опцию -d (directory). Вы можете использовать подстановочные знаки (* и ?) В именах каталогов так же, как и в именах файлов.
Предоставление более одного имени каталога удаляет все указанные пустые каталоги.
Чтобы удалить не пустые каталоги, используйте параметр -r (рекурсивный). Чтобы было ясно, это удаляет каталоги и все файлы и подкаталоги, содержащиеся в них.
Если каталог или файл защищен от записи, вам будет предложено подтвердить удаление. Чтобы удалить не пустые каталоги и подавить эти приглашения, используйте вместе параметры -r (рекурсивный) и -f (принудительный).
Здесь требуется осторожность. Ошибка в команде rm -rf может привести к потере данных или неисправности системы. Это опасно, и осторожность — лучшая политика. Чтобы получить представление о структуре каталогов и файлах, которые будут удалены командой rm -rf, используйте команду tree .
Используйте apt-get для установки этого пакета в вашу систему, если вы используете Ubuntu или другой дистрибутив на основе Debian. В других дистрибутивах Linux используйте инструмент управления пакетами вашего дистрибутива Linux.
Выполнение команды tree дает простую для понимания диаграмму структуры каталогов и файлов под каталогом, из которого она запускается.
Вы также можете указать путь к команде tree чтобы он запускал дерево из другого каталога в файловой системе.
Команда rm также имеет параметры —one-file-system , —no-preserve-root , —preserve-root , но они рекомендуются только для опытных пользователей. Если вы что-то не так, вы можете случайно удалить все ваши системные файлы.
Как удалить каталоги с помощью rmdir
Есть еще одна команда rmdir , которую вы можете использовать для удаления каталогов. Разница между rm и rmdir том, что rmdir может удалять только пустые каталоги. Он никогда не удалит файлы.
Самый простой случай — удаление одного пустого каталога. Как и в случае с rm , вы можете передать несколько имен каталогов в rmdir или rmdir путь к каталогу.
Удалите один каталог в текущем каталоге, передав его имя в rmdir :
Удалите несколько каталогов, передав список имен в rmdir :
Удалите каталог не в текущем каталоге, указав полный путь к этому каталогу:
Если вы попытаетесь удалить не пустую папку, rmdir выдаст вам сообщение об ошибке. В следующем примере rmdir успешно и без вывода сообщений удаляет каталог clients но отказывается удалять каталог projects поскольку он содержит файлы. Каталог projects остается точно таким, каким он был, а файлы в нем нетронутыми.
Когда rmdir выдает ошибку «Directory not empty», он прекращает обработку каталогов, переданных ему в командной строке. Если вы попросили удалить четыре каталога, а в первом содержались файлы, rmdir выдаст вам сообщение об ошибке и больше ничего не сделает. Вы можете заставить его игнорировать эти ошибки с —ignore-fail-on-non-empty чтобы обрабатывать другие каталоги.
В следующем примере две папки были переданы в rmdir , это work/reports и work/quotes. Параметр —ignore-fail-on-non-empty включен в команду. В папке work/reports находятся файлы, поэтому rmdir не может удалить ее. Опция —ignore-fail-on-non-empty заставляет rmdir игнорировать ошибку и переходить к следующей папке, которую он должен обработать, это work/quotes. Это пустая папка, и rmdir удаляет ее.
Эта команда использовалась.
Вы можете использовать опцию -p (parent), чтобы удалить каталог, а также удалить его родительские каталоги. Этот прием работает, потому что rmdir начинается с целевого каталога, а затем возвращается к родительскому. Теперь этот каталог должен быть пустым, поэтому он может быть удален rmdir, и процесс повторяет шаг назад по пути, предоставленному rmdir.
В следующем примере команда, переданная в rmdir:
Каталоги invoices и work удаляются по запросу.
Используете ли вы Bash или любую другую оболочку? Linux предоставляет гибкие и мощные команды для удаления каталогов и файлов прямо из командной строки терминала. Некоторые люди предпочитают иметь рабочий процесс, который вращается вокруг терминала. У других может не быть выбора в этом вопросе. Они могут работать на серверах без установленного графического интерфейса или в удаленном сеансе в автономной системе, такой как Raspberry Pi. Эти команды идеально подходят для этой группы людей.
Но какой бы тип рабочего процесса вы ни предпочли, эти команды очень хорошо подходят для включения в сценарии оболочки. Если сценарий запускается заданием cron , это может помочь автоматизировать рутинные служебные задачи, такие как очистка нежелательных файлов журнала. Если вы исследуете этот вариант использования, помните о силе этих команд, тщательно проверяйте все и всегда сохраняйте последнюю резервную копию.
Источник