- Удаляем пустые файлы и директории
- Удаляем пустые файлы
- Удаляем пустые директории
- Как удалить каталог в Linux
- Подготовка
- Удаление каталогов с помощью rmdir
- Удаление каталогов с помощью rm
- Удаление каталогов с помощью find
- Удаление всех пустых каталогов
- / bin / rm: слишком длинный список аргументов
- Выводы
- Удалить пустые файлы и директории в Unix/Linux
- Удалить пустые файлы в Unix/Linux
- Удалить пустые директории в Unix/Linux
Удаляем пустые файлы и директории
Рассмотрим, как удалить все пустые файлы или директории в определенной директории. Сделать это очень просто через командную строку, используя команды find, rm и rmdir.
Откройте терминал (командную строку) и перейдите командой cd в ту директорию, в которой вам необходимо удалить пустые файлы:
Удаляем пустые файлы
Выведем список пустых файлов. Для этого выполним команду find и укажем ей, что нам в текущей директории необходимо найти только файлы (параметр -type f) и эти файлы должны быть пустыми (параметр -empty):
Теперь воспользуемся аргументом -exec, который позволяет выполнить определенную команду над списком файлов. Мы укажем, что хотим выполнить команду rm (удалить файл). Итак, чтобы удалить пустые файлы выполните команду:
find . -type f -empty -exec rm <> \;
Удаляем пустые директории
Сначала просто посмотрим, какие директории у нас не содержат файлов. Для этого, так же как и для файлов используем команду find с ключом -empty, но указываем -type d. Выполним в командной строке:
Получим список пустых директорий.
Теперь нам нужно их удалить. Аргументу -exec укажем команду rmdir (удалить директори). Чтобы удалить пустые директории выполняем:
find . -type d -empty -exec rmdir <> \;
Обращаю ваше внимание на то, что выполнять данные команды нужно с осторожностью, чтобы случайно не удалить то, что не нужно. Также нельзя выполнять их в системных директориях, так как в большинстве случаев пустые файлы и директории созданы там специально, и их отсутствие приведет к сбоям в системе.
Дополнительную информацию по команде find вы можете почитать в статье Команда find: широкие возможности для поиска файлов в Linux.
Как удалить каталог в Linux
Есть несколько различных способов удаления каталогов в системах Linux. Если вы используете файловый менеджер рабочего стола, такой как Gnome’s Files или KDE’s Dolphin, вы можете удалять файлы и каталоги с помощью графического пользовательского интерфейса менеджера. Но если вы работаете на автономном сервере или хотите удалить сразу несколько каталогов, лучшим вариантом является удаление каталогов (папок) из командной строки.
В этой статье мы объясним, как удалять каталоги в Linux с помощью команд rmdir , rm и find .
Подготовка
При удалении каталога с помощью файлового менеджера рабочего стола каталог фактически перемещается в корзину и может быть легко восстановлен.
Будьте особенно осторожны при удалении файлов или каталогов из командной строки, поскольку после удаления каталога с помощью команд, описанных в этой статье, его невозможно полностью восстановить.
В большинстве файловых систем Linux для удаления каталога требуется разрешение на запись в каталог и его содержимое. В противном случае вы получите ошибку «Операция запрещена».
Имена каталогов с пробелами должны быть экранированы обратной косой чертой ( / ).
Удаление каталогов с помощью rmdir
rmdir — это утилита командной строки для удаления пустых каталогов. Это полезно, когда вы хотите удалить каталог только в том случае, если он пуст, без необходимости проверять, пуст каталог или нет.
Чтобы удалить каталог с помощью rmdir , введите команду, а затем имя каталога, который вы хотите удалить. Например, чтобы удалить каталог с именем dir1 , введите:
Если каталог не пустой, вы получите следующую ошибку:
rmdir: failed to remove 'dir1': No such file or directory
В этом случае вам нужно будет использовать команду rm или вручную удалить содержимое каталога, прежде чем вы сможете его удалить.
Удаление каталогов с помощью rm
rm — это утилита командной строки для удаления файлов и каталогов. В отличие от rmdir команда rm может удалять как пустые, так и непустые каталоги.
По умолчанию при использовании без каких-либо параметров rm не удаляет каталоги. Чтобы удалить пустой каталог, используйте параметр -d ( —dir ), а для удаления непустого каталога и всего его содержимого используйте параметр -r ( —recursive или -R ).
Например, чтобы удалить каталог с именем dir1 вместе со всем его содержимым, введите:
Если каталог или файл в каталоге защищен от записи, вам будет предложено подтвердить удаление. Чтобы удалить каталог без запроса, используйте параметр -f :
Чтобы удалить сразу несколько каталогов, вызовите команду rm , после которой укажите имена каталогов, разделенные пробелом. Приведенная ниже команда удалит все перечисленные каталоги и их содержимое:
Параметр -i указывает rm запрашивать подтверждение удаления каждого подкаталога и файла. Если в каталоге много файлов, это может немного раздражать, поэтому вы можете рассмотреть возможность использования опции -I которая предложит вам только один раз, прежде чем продолжить удаление.
Чтобы удалить каталог, введите y и нажмите Enter .
rm: remove 1 argument recursively? y
Вы также можете использовать обычные расширения для сопоставления и удаления нескольких каталогов. Например, чтобы удалить все каталоги первого уровня в текущем каталоге, который заканчивается на _bak , вы должны использовать следующую команду:
Использование регулярных расширений при удалении каталогов может быть рискованным. Рекомендуется сначала перечислить каталоги с помощью команды ls чтобы вы могли видеть, какие каталоги будут удалены, прежде чем запускать команду rm .
Удаление каталогов с помощью find
find — это утилита командной строки, которая позволяет вам искать файлы и каталоги на основе заданного выражения и выполнять действие с каждым совпадающим файлом или каталогом.
Наиболее распространенный сценарий — использовать команду find для удаления каталогов на основе шаблона. Например, чтобы удалить все каталоги, которые заканчиваются на _cache в текущем рабочем каталоге, вы должны запустить:
find . -type d -name '*_cache' -exec rm -r <> +
Давайте проанализируем команду выше:
- /dir — рекурсивный поиск в текущем рабочем каталоге ( . ).
- -type d — ограничивает поиск каталогами.
- -name ‘*_cache’ — искать только каталоги, заканчивающиеся на _cache
- -exec — выполняет внешнюю команду с необязательными аргументами, в данном случае это rm -r .
- <> + — добавляет найденные файлы в конец команды rm .
Удаление всех пустых каталогов
Чтобы удалить все пустые каталоги в дереве каталогов, выполните:
find /dir -type d -empty -delete
Вот объяснение используемых опций:
- /dir — рекурсивный поиск в каталоге /dir .
- -type d — ограничивает поиск каталогами.
- -empty — ограничивает поиск только пустыми каталогами.
- -delete — удаляет все найденные пустые каталоги в поддереве. -delete может удалять только пустые каталоги.
Используйте параметр -delete с особой осторожностью. Командная строка поиска оценивается как выражение, и если вы сначала добавите параметр -delete , команда удалит все, что находится ниже указанных вами начальных точек.
Всегда сначала проверяйте команду без опции -delete и используйте -delete в качестве последней опции.
/ bin / rm: слишком длинный список аргументов
Это сообщение об ошибке появляется, когда вы используете команду rm для удаления каталога, содержащего огромное количество файлов. Это происходит из-за того, что количество файлов превышает системное ограничение на размер аргумента командной строки.
Есть несколько разных решений этой проблемы. Например, вы можете cd в каталог и вручную или с помощью цикла для удаления Подкаталогов один за другим.
Самое простое решение — сначала удалить все файлы в каталоге с помощью команды find а затем удалить каталог:
find /dir -type f -delete && rm -r /dir
Выводы
С помощью rm и find вы можете быстро и эффективно удалять каталоги по различным критериям.
Удаление каталогов — простой и легкий процесс, но вы должны быть осторожны, чтобы не удалить важные данные.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Удалить пустые файлы и директории в Unix/Linux
Решил написать статью о там как можно удалить пустые файлы и директории в ОС — Linux. Я покажу и расскажу как это можно сделать в своей статье «Удалить пустые файлы и директории в Linux» и приведу готовые примеры как можно удалить все пустые файлы или директории в определенной папке. Делается это через командную строку с использованием команд: find, rm и rmdir.
Сейчас откроем терминал (командную строку) и перейдем в ту папку, в которой вам нужно удалить все пустые файлы:
Удалить пустые файлы в Unix/Linux
Для начала, посмотрим список имеющихся пустых файлов. Для этого, я буду использовать команду find и укажу ей (передам параметр), что мне нужно найти только файлы (за это отвечает параметр «-type f») и что данные файлы должны быть пустыми (за это отвечает параметр «-empty») в текущей моей папки:
Теперь, я воспользуюсь аргументом «-exec», он дает возможность выполнить определенную команду над списком файлов. Я передам в «exec» то, что хочу выполнить команду «rm» (удалить файлы) для пустых файлов:
# find . -type f -empty -exec rm <> \;
Удалить пустые директории в Unix/Linux
Для начала, я проверю какие папки у меня не содержат файлов. Для этого, я так же буду использовать команду «find» с параметром «-empty», но указываю тип поиска «-type d» (поиск папок):
Сейчас мне необходимо их удалить. Передаю аргументу «-exec» команду rmdir (удаление папок) для того чтобы удалить все имеющиеся пустые папки:
# find . -type d -empty -exec rmdir <> \;
# find . -type d -empty -exec rmdir <> +
# find . -type d -empty -delete
Статья «Удалить пустые файлы и директории в Unix/Linux» подошла к завершению.