training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Как рекурсивно удалить файлы папки rm BASH

Создано: 25 мая 2017Автор: Егор Астапов5684 просмотраСложность: легкий

Как выполнить удаление файлов при помощи команды rm. Эту тему должен знать каждый пользователь linux. Тут ошибаться нельзя. Удалённые файлы не перемещаются в корзину как в виндовс. Удаление происходит навсегда. Если у вас организовано копирование файлов, то можете поэкспериментировать. Советую для начала сделать тестовую папку. Затем создать в ней много пустых файлов touch file{1..100}.txt. Потом попробуйте удалить один файл и несколько файлов.


# файл не запускать!!! Удалит все файлы
exit 1

# рекурсивное удаление папок с файлами и подкаталогами
rm -r folder1

# будет удалено всё кроме самой директории, нужно пробраться в саму папку и там выполнить удаление
rm -r * 

# удаление без подтверждения. Использовать осторожно
rm -rf

# показывает текст с действием: удалён "file1"
rm -v file1

# никогда не использовать! Удалит всю файловую систему
rm -rf /*

# запрашивает подтверждение
rm -i file1

# Правильный способ удаления файлов, в чьих именах содержатся пробелы.
rm *\ *
rm *" "*
rm *' '*

Посмотрите на скрипт для удаления файлов в определённой папке. Он простой. В нем имеется проверка каталога. Если вы обратились не к каталогу, то скрипт остановится в выведет предупреждение. Такая проверка необходима! Запустите файл ./dell_files.sh ./dell_folder. Вы должны передать скрипту параметр ./dell_folder (папка с файлами). У вас будет свой передаваемый параметр args. Подробно о передаваемых параметрах написано в статье как вывести циклом список аргументов переданных скрипту sh args BASH.


#!/bin/bash
#Егор Астапов 2017-05-25
# dell_files.sh - скрипт для удаления файлов в папке
BADDIR=65

#$1 - передаваемый параметр

# удаляет все файлы в папке
#rm -f $1/*

# Проверка существования заданного каталога.
if [ ! -d "$1" ]
then
  echo "$1 -- не является каталогом."
  exit $BADDIR
else
  #подсчёт файлов перед удалением
  echo "количество файлов в папке: `ls -1 $1 | wc -l`"

  echo "$1 - выполняется удаление."
  rm -f $1/*
  echo "количество файлов в папке: `ls -1 $1 | wc -l`"
fi

#вывод:
#количество файлов в папке: 10
#./dell_files - выполняется удаление.
#количество файлов в папке: 0

Комментарии

Сергей: 02 апреля 2018 11:14:38
Опечатка "Как выполнить удаление файлов при помощи команды *****rf****"

Егор Астапов: 02 апреля 2018 12:29:07
Спасибо Сергей! Исправил ошибку.

реклама