Bash, как удалить файл
Обновлено: 21.11.2024
В предыдущем разделе, посвященном сеансам терминала, вы узнали, что терминал отображает приглашение, указывающее, что Bash ожидает ввода.
Напоминаем, что в зависимости от настроек вашего компьютера вы можете увидеть другой символ в качестве подсказки и/или дополнительную информацию перед подсказкой, например, ваше текущее местоположение в файловой структуре вашего компьютера (т.е. ваш текущий рабочий каталог).< /p>
При вводе команд (как из этого учебника, так и из других источников) не вводите знак доллара (или другой символ подсказки). Введите только те команды, которые следуют за ним.
Примечание. В примерах на этой странице строки с отступом, следующие за подсказкой и не начинающиеся со знака доллара ($), являются выходными данными команды. Результаты приведенных ниже команд на вашем компьютере будут немного отличаться в зависимости от вашей операционной системы и того, как вы настроили файловую систему.
Полезные команды Bash для управления каталогами и файлами
Печать текущего рабочего каталога ( pwd )
Ваш текущий рабочий каталог — это каталог, в котором выполняются ваши команды. Обычно он печатается как полный путь к каталогу (это означает, что вы можете видеть родительский каталог).
Чтобы напечатать имя текущего рабочего каталога, используйте команду pwd .
Поскольку это первая команда, которую вы выполнили в Bash в этом сеансе, результатом pwd будет полный путь к вашему домашнему каталогу. Домашний каталог — это каталог по умолчанию, в котором вы будете находиться каждый раз при запуске нового сеанса Bash.
Пользователи Windows: обратите внимание, что Терминал использует прямую косую черту (/) для обозначения каталогов в пути. Это отличается от проводника Windows, который использует обратную косую черту ( \ ) для обозначения каталогов в пути.
Изменить текущий рабочий каталог ( cd )
Часто может потребоваться изменить текущий рабочий каталог, чтобы получить доступ к другим подкаталогам и файлам.
Чтобы изменить каталог, используйте команду cd, за которой следует имя каталога (например, cd downloads ). Затем вы можете снова распечатать текущий рабочий каталог, чтобы проверить новый путь.
Например, вы можете изменить рабочий каталог на существующий каталог документов в вашем домашнем каталоге, а затем проверить, обновлен ли текущий рабочий каталог.
Вы можете вернуться в родительский каталог любого текущего каталога с помощью команды cd .. , так как Bash понимает полный путь к текущему рабочему каталогу.
Вы также можете вернуться в свой домашний каталог (например, /users/jpalomino ) в любое время, используя команду cd ~ (символ, известный как тильда).
Создать новый каталог ( mkdir )
Первым шагом в создании нового каталога является переход к каталогу, который вы хотите сделать родительским для этого нового каталога, с помощью cd .
Затем введите команду mkdir, за которой следует имя, которое вы хотите присвоить новому каталогу (например, mkdir имя-каталога ).
Например, вы можете создать новый каталог в документах с названием задания. Затем вы можете перейти в новый каталог с именем назначения и распечатать текущий рабочий каталог, чтобы проверить новый путь.
Обратите внимание, что команда mkdir не имеет выходных данных. Кроме того, поскольку назначения предоставляются Bash как относительный путь (т. е. не имеют ведущей косой черты или дополнительной информации о пути), новый каталог создается в текущем рабочем каталоге (например, документы ) по умолчанию.
Подсказка по данным: каталог и папка. Вы можете думать о каталоге как о папке. Однако помните, что термин «каталог» рассматривает отношения между этой папкой и папками внутри нее и вокруг нее.
Подсказка по данным: обратите внимание, что вы создаете легко читаемое имя каталога. Имя не содержит пробелов и использует все строчные буквы для поддержки машинного чтения в будущем.
Печать списка файлов и подкаталогов ( ls )
Чтобы просмотреть список всех подкаталогов и файлов в текущем рабочем каталоге, используйте команду ls .
В приведенном выше примере команда ls напечатала содержимое домашнего каталога, в котором есть подкаталоги с именами «документы» и «загрузки», а также файлы с именами «address.txt» и «grades.txt».
Вы можете продолжить изменение текущего рабочего каталога на подкаталог, например, документы, и распечатать новый список всех файлов и подкаталогов, чтобы увидеть только что созданный каталог заданий.
Вы также можете создать новый подкаталог в разделе заданий под названием домашние задания , а затем перечислить содержимое каталога заданий, чтобы увидеть только что созданные домашние задания .
Удалить файл ( rm )
Чтобы удалить конкретный файл, вы можете использовать команду rm, за которой следует имя файла, который вы хотите удалить (например, rm имя файла).
Например, вы можете удалить файл address.txt в домашнем каталоге.
Удалить каталог ( rm -r )
Чтобы удалить (т.е.удалить) каталог и все содержащиеся в нем подкаталоги и файлы, перейдите в его родительский каталог, а затем используйте команду rm -r, за которой следует имя каталога, который вы хотите удалить (например, rm -r имя-каталога ) .
Например, вы можете удалить каталог назначений в каталоге документов, поскольку оно не соответствует требованиям хорошего имени для каталога (т. е. недостаточно описательно — какие задания?).
RM означает удаление, а -r необходим, чтобы сообщить Bash, что ему нужно повторить (или повторить) команду через список всех файлов и подкаталогов в родительском каталоге.
Таким образом, вновь созданный каталог домашних заданий в разделе заданий также будет удален при удалении заданий.
Копировать файл ( cp )
Вы также можете скопировать определенный файл в новый каталог, используя команду cp, за которой следует имя файла, который вы хотите скопировать, и имя каталога, в который вы хотите скопировать файл (например, cp имя-файла имя-каталога ).
Например, вы можете скопировать файлgrade.txt из домашнего каталога в документы.
Обратите внимание, что исходная копия файла остается в исходном каталоге, поэтому теперь у вас будет две копии файлаgrades.txt : исходная в домашнем каталоге и копия в документах .
Копировать каталог и его содержимое ( cp -r )
Аналогичным образом вы можете скопировать весь каталог в другой каталог, используя cp -r, за которым следует имя каталога, который вы хотите скопировать, и имя каталога, в который вы хотите скопировать каталог (например, cp -r имя-каталога -1 имя-каталога-2 ).
Подобно rm -r , -r в cp -r необходимо, чтобы сообщить Bash, что ему нужно повторить (или повторить) команду через список всех файлов и подкаталогов в родительском каталоге.
И снова исходная копия каталога остается в исходном каталоге.
Создать новый файл с помощью одной команды ( touch )
Вы можете создать новый пустой файл с помощью одной команды touch (например, touch имя-файла.txt ). Эта команда изначально была создана для управления временными метками файлов. Однако, если файл еще не существует, команда создаст файл.
Это невероятно полезный способ быстро и программно создать новый пустой файл, который можно будет заполнить позже.
Попрактикуйте свои навыки Bash
Организация проекта является неотъемлемой частью эффективного исследования. В этом задании вы будете использовать Bash для создания каталога геоаналитики, который вы будете использовать в этом учебнике.
Затем вы создадите каталог данных в каталоге earth-analytics, чтобы сохранить все данные, которые вам понадобятся для выполнения домашних заданий и прохождения курса.
Создать каталог для аналитики земли
Начните с создания каталога (или папки) earth-analytics в вашем домашнем каталоге. Напомним, что это каталог по умолчанию, в котором открывается Терминал.
- Создайте новый каталог с именем earth-analytics .
- Затем измените рабочий каталог на каталог earth-analytics и создайте в нем новый каталог с именем data .
- Наконец, вернитесь в домашний каталог и подтвердите, что вы можете получить доступ к только что созданным каталогам.
Обновлено: 3 сентября 2020 г.
Поделиться
Оставить комментарий
Вам также может понравиться
График данных с помощью Matplotlib
Расчет сезонных сводных значений из переменных климатических данных, хранящихся в формате NetCDF 4: работа с климатическими данными MACA v2 в Python
Узнайте, как рассчитать сезонные сводные значения для климатических данных MACA 2, используя xarray и маску региона в Python с открытым исходным кодом.
Расчет сводных значений с использованием пространственных областей интереса (AOI), включая шейп-файлы для переменных климатических данных, хранящихся в формате NetCDF 4: работа с климатическими данными MACA v2 в Python
Наборы климатических данных, хранящиеся в формате netcdf 4, часто охватывают весь земной шар или всю страну. Узнайте, как разделить климатические данные на подмножества в пространстве и по временным срезам u.
Как открыть и обработать формат данных NetCDF 4 в Python с открытым исходным кодом
Исторические и прогнозируемые климатические данные чаще всего хранятся в формате netcdf 4. Узнайте, как открывать и обрабатывать климатические данные MACA версии 2 для Continental U.
Дэйв Маккей
Дэйв Маккей
Писатель
Команды rm и rmdir удаляют файлы и каталоги в Linux, macOS и других Unix-подобных операционных системах. Они аналогичны командам del и deltree в Windows и DOS. Эти команды очень мощные и имеют довольно много параметров.
Важно отметить, что файлы и каталоги, удаленные с помощью rm и rmdir, не перемещаются в корзину. Они немедленно удаляются с вашего компьютера. Если вы случайно удалите файлы с помощью этих команд, восстановить их можно будет только из резервной копии.
Как удалить файлы с помощью rm
Самый простой случай — удаление одного файла в текущем каталоге. Введите команду rm, пробел и имя файла, который вы хотите удалить.
Если файл находится не в текущем рабочем каталоге, укажите путь к местоположению файла.
Вы можете передать более одного имени файла в rm . При этом будут удалены все указанные файлы.
Подстановочные знаки можно использовать для выбора групп файлов, которые необходимо удалить. * представляет собой несколько символов, а ? представляет один символ. Эта команда удалит все файлы изображений png в текущем рабочем каталоге.
Эта команда удалит все файлы с односимвольным расширением. Например, это удалит File.1 и File.2, но не File.12.
Если файл защищен от записи, вы получите запрос перед удалением файла. Вы должны ответить y или n и нажать «Ввод».
Чтобы снизить риск использования rm с подстановочными знаками, используйте параметр -i (интерактивный). Это требует подтверждения удаления каждого файла.
Параметр -f (принудительно) противоположен интерактивному. Подтверждение не запрашивается, даже если файлы защищены от записи.
Как удалить каталоги с помощью rm
Чтобы удалить пустой каталог, используйте параметр -d (каталог). Вы можете использовать подстановочные знаки ( * и ? ) в именах каталогов так же, как и в именах файлов.
Указание более одного имени каталога приводит к удалению всех указанных пустых каталогов.
Чтобы удалить каталоги, которые не пусты, используйте параметр -r (рекурсивный). Чтобы было ясно, это удаляет каталоги и все файлы и подкаталоги, содержащиеся в них.
Если каталог или файл защищены от записи, вам будет предложено подтвердить удаление. Чтобы удалить каталоги, которые не пусты, и подавить эти подсказки, используйте вместе параметры -r (рекурсивный) и -f (принудительный).
Здесь требуется осторожность. Ошибка с командой rm -rf может привести к потере данных или сбою системы. Это опасно, и осторожность — лучшая политика. Чтобы получить представление о структуре каталогов и файлах, которые будут удалены командой rm -rf, используйте команду дерева.
Используйте apt-get для установки этого пакета в вашу систему, если вы используете Ubuntu или другой дистрибутив на основе Debian. В других дистрибутивах Linux вместо этого используйте инструмент управления пакетами вашего дистрибутива Linux.
Выполнение команды дерева создает простую для понимания диаграмму структуры каталогов и файлов в каталоге, из которого она запущена.
Вы также можете указать путь к команде дерева, чтобы она запускала дерево из другого каталога в файловой системе.
У команды rm также есть параметры --one-file-system, --no-preserve-root, --preserve-root, но они рекомендуются только опытным пользователям. Если вы что-то сделаете не так, вы можете случайно удалить все системные файлы. Обратитесь к странице руководства команды для получения дополнительной информации.
Как удалить каталоги с помощью rmdir
Есть еще одна команда, называемая rmdir , которую вы можете использовать для удаления каталогов. Разница между rm и rmdir заключается в том, что rmdir может удалять только пустые каталоги. Он никогда не удалит файлы.
Простейшим случаем является удаление одного пустого каталога. Как и в случае с rm , вы можете передать несколько имен каталогов в rmdir или путь к каталогу.
Удалить один каталог в текущем каталоге, передав его имя в rmdir :
Удалить несколько каталогов, передав список имен в rmdir :
Удалить каталог, не входящий в текущий каталог, указав полный путь к этому каталогу:
Если вы попытаетесь удалить непустую папку, rmdir выдаст вам сообщение об ошибке. В следующем примере rmdir успешно и без вывода сообщений удаляет каталог клиентов, но отказывается удалять каталог проектов, поскольку он содержит файлы. Каталог проектов остался таким же, как и был, и файлы в нем остались нетронутыми.
Когда rmdir выдает ошибку «Каталог не пуст», он прекращает обработку каталогов, которые были переданы ему в командной строке. Если вы попросили его удалить четыре каталога, а в первом были файлы, 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 (parents) для удаления каталога, а также для удаления его родительских каталогов. Этот трюк работает, потому что rmdir начинается с целевого каталога, а затем возвращается к родительскому. Теперь этот каталог должен быть пуст, чтобы его можно было удалить с помощью rmdir , и процесс повторяется, возвращаясь к пути, указанному для rmdir .
В следующем примере в rmdir передается команда:
И счета-фактуры, и рабочие каталоги удаляются в соответствии с запросом.
Используете ли вы Bash или любую другую оболочку, Linux предоставляет гибкие и мощные команды для удаления каталогов и файлов прямо из командной строки терминала. Некоторые люди предпочитают, чтобы рабочий процесс вращался вокруг терминала. У других может не быть выбора в этом вопросе. Они могут работать на серверах без установленного графического интерфейса или в удаленном сеансе безголовой системы, такой как Raspberry Pi. Эти команды идеально подходят для этой группы людей.
Но какой бы рабочий процесс вы ни предпочли, эти команды очень хорошо подходят для включения в сценарии оболочки. Если сценарий запускается заданием cron, он может помочь автоматизировать рутинные задачи по обслуживанию, такие как очистка ненужных файлов журнала. Если вы исследуете этот вариант использования, помните о силе этих команд, тщательно проверяйте все и всегда сохраняйте последнюю резервную копию.
Команды Linux | |
Файлы | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm |
Процессы | alias · screen · top · nice · renice · прогресс · strace · systemd · tmux · chsh · история · at · пакетное · бесплатное · которое · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · стена · yes · kill · спать · sudo · su · время · groupadd · usermod · группы · lshw · выключение · перезагрузка · halt · poweroff · passwd · lscpu · crontab · date · bg · fg |
Сеть | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · копать · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
- › Как использовать команду «да» на Mac
- › Как безопасно удалить файлы в Linux
- › Как использовать BleachBit в Linux
- › Как восстановить удаленные файлы в Linux с помощью testdisk
- › Худшее, что есть в телефонах Samsung, — это программное обеспечение Samsung.
- ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)
- › Почему прозрачные чехлы для телефонов желтеют?
- › Что означает XD и как вы его используете?
Не очень нравится. Мы можем использовать команду unlink для безвозвратного удаления одного файла.
2. Удалить один файл:
Команда rm, упрощающая одновременное удаление одного или нескольких файлов, является более широко используемой командой для удаления файлов.
Если файл защищен от записи, rm попросит вас подтвердить его удаление; в противном случае он удалит его без запроса. Использование флага «-i», чтобы заставить rm запрашивать подтверждение перед удалением файла:
Команда rm удаляет файлы без отображения каких-либо сообщений. Используйте команду rm с флагом -v, чтобы увидеть, что в данный момент делает команда rm.
Использование флага -f для удаления файлов, защищенных от записи, без запроса разъяснений.
3. Можно удалить несколько файлов:
Не передавая несколько имен файлов в качестве аргументов для rm, вы можете удалить несколько файлов.
Регулярные выражения также поддерживаются rm. Если вы хотите удалить все файлы с именем имя-файла-*, введите:
Регулярные выражения также можно использовать для определения разных каталогов. Мы можем использовать что-то вроде удаления трех файлов, соответствующих имени файла-1, имени файла-2 и имени файла-3.
4. Удалить архив:
Команду rm с флагом -d можно использовать для удаления пустого каталога.
Поддерживаемые параметры удаления файла также можно комбинировать с удалением каталога с помощью флага -d.
Использование флага -r для удаления непустого каталога.
Если вам не нужен запрос перед удалением каталога и его содержимого, используйте флаг -rf. Это удалит все внутри каталога, включая сам каталог, без какого-либо подтверждения. Будьте осторожны, особенно при использовании в качестве root.
5. Найдите и удалите файлы:
Мы можем использовать команду locate с различными вариантами для более сложных спецификаций. Чтобы удалить все файлы по указанному пути, следуйте шаблону .
Пример:
Мы можем немного изменить приведенную выше команду, чтобы удалить все, что соответствует последовательности >, включая каталоги внутри:
Внутри современные реализации команды find поддерживают функцию удаления. Флаг -delete используется для переопределения инструкции rm, а флаг –depth указывает find обрабатывать содержимое каталога перед самим каталогом:
6. Пустые файлы должны быть найдены и удалены:
Вы можете использовать следующую команду, чтобы удалить все пустые каталоги в пределах заданного пути от каталога к поиску:
Вместо этого используйте следующую команду, чтобы удалить все пустые файлы по заданному пути каталог-поиск:
7.Разрешения используются для поиска и удаления файлов:
Теперь мы можем удалять файлы на основе специальных разрешений, таких как:
Рассмотрите следующий сценарий:
Простые команды (unlink), (rm) и (rmdir) доступны в Linux, и их можно быстро расширить с помощью регулярных выражений. Для более специализированных потребностей вы должны использовать различные методы, такие как (найти), для достижения ваших целей. Помимо примеров в этом посте, вы можете настроить свой квест, используя поиск с любым из доступных флагов.
Часто запускайте команды find без флагов rm или -delete и проверяйте вывод, чтобы определить, какие файлы или папки могут быть затронуты выполнением программы. Настройка и процедура резервного копирования полезны не только в случае непреднамеренного удаления, но и в случае аппаратных ошибок и кибератак.
В этой статье показано, как удалять файлы старше заданного количества дней (или часов/минут) вручную или автоматически с помощью сценария Bash. Примеры включены.
Для удаления файлов старше определенного количества дней (или минут, или часов) используются две команды Linux — rm и find.
Удаление файлов с помощью rm
Сначала команда rm. Команда rm используется для удаления файлов и каталогов в Linux. Вот целая статья о том, как это используется:
Передача отфильтрованного списка файлов в rm
Следующий компонент, команда найти. Команда find используется для поиска файлов по набору критериев — в данном случае по возрасту файла (время, прошедшее с момента его изменения). Вот наша статья о команде find:
Соединяем их вместе — пример
Совместное использование find и rm:
Что здесь происходит?
Часы, минуты вместо дней
Чтобы использовать минуты вместо дней в качестве единицы времени, вы можете заменить -mmin вместо -mtime.
В приведенном выше примере будут удалены файлы старше 30 минут.
Превращение в сценарий
Вместо того, чтобы печатать это, вы можете превратить это в сценарий
Сохраните приведенный выше фрагмент в файл (например, с именем deletescript.sh), а затем его можно будет вызвать, запустив:
Вы также можете создать псевдоним для команды, если хотите запускать ее откуда угодно.
Планирование удаления старых файлов
Если вы хотите, чтобы команда запускалась автоматически с заданным интервалом, добавьте ее в свой crontab. В файле crontab хранятся запланированные задачи пользователя в Linux, и его можно редактировать, выполнив:
При выполнении вышеперечисленного отобразится редактор crontab. Просто добавьте в файл следующее, чтобы скрипт запускался каждый день:
Брэд Мортон
Меня зовут Брэд, и мой опыт работы с Linux приближается к 20 годам. Я работал почти во всех ИТ-должностях, прежде чем заняться разработкой программного обеспечения. В настоящее время я создаю настольные и веб-решения с NodeJS и PHP, размещенными в инфраструктуре Linux. Посетите мой блог или найдите меня в Твиттере, чтобы узнать, чем я занимаюсь.
2 мысли о «Удаление файлов старше X дней/часов в Bash [Примеры]»
Большое спасибо!
У меня есть пара BASH-скриптов для регистрации качества моего интернет-провайдера, регистрируя скорость каждые полчаса с помощью speedtest-cli в одном файле и отслеживая время простоя с помощью curl, nc, ping и wget в другом. Мои файлы журналов создаются либо ежедневно в полночь с помощью cron, либо, если мой компьютер не работает до полуночи, они создаются по дате при запуске. У меня они есть в «Приложениях для запуска». В любом случае, это дает мне два лог-файла на каждый день, когда я работаю, и мне нужен был способ проредить стадо.
Это прекрасно работает! И ваше объяснение было превосходным!
Еще раз спасибо!
Читайте также: