Я пытаюсь удалить все файлы и подкаталоги в каталоге. Я использовал rm -r
для удаления всех файлов, но я хочу удалить все файлы и подкаталоги, исключая сам верхний каталог.
Например, у меня есть верхний каталог images
. Он содержит файлы header.png
, footer.png
и подкаталог.
Теперь я хочу удалить header.png
, footer.png
и подкаталог, но не images
.
Как я могу сделать это в linux?
Если ваш каталог верхнего уровня называется images
, выполните команду rm -r images/*
. При этом используется оператор glob shell *
для запуска rm -r
для каждого файла или каталога в пределах images
.
Чтобы удалить скрытые файлы, вы должны указать:
rm -r images/* images/.*
С чьи снаряды Глобс содержать .
и ..
, это приведет к ошибке, как
rm: cannot remove `.' directory `images/.'
rm: cannot remove `..' directory `images/..'
но это будет удалить скрытые файлы.
Подход без сообщение об ошибке с помощью поиска/удалить с mindepth. Это гну-найти.
find images -mindepth 1 -delete
Ваша находка, возможно, не хватает -mindepth
или -удалить
предикатом, в этом случае, вы могли бы сделать:
find images/. ! -name . -prune -exec rm -rf {} +
Чтобы удалить все файлы и каталоги(в том числе скрыт) в каталог, вы можете попробовать следующее:
ls -АБ
, чтобы соответствовать все файлы/каталогина CD имя_каталога &&усилителя; РМ -РФ ЛС-АБ`
найти
, чтобы соответствовать все файлы/каталогинайти имя_каталога -mindepth 1 -удалить
или, если ваш найти
не'т поддерживать -удалить
:
найти имя_каталога -mindepth 1 -экзек РМ -РФ {}
РМ -РФ имя_каталога && функция mkdir имя_каталога
shopt -с dotglob РМ -РФ имя_каталога/*
Чтобы удалить все файлы regular рекурсивно в директории, эта команда (при условии, ГНУ или FreeBSD найти
) достаточно хорошо:
find . -type f -delete
Это значит, что все номера-обычные файлы как ссылки (будь они указывают на регулярные файлы или нет), каталоги, порта, разъемы, устройства...
См. также:
find . ! -type d -delete
чтобы удалить файлы любого типа, за исключением directory.
Вопрос был в пустой каталог = удалить содержимое каталога, включая скрытые файлы, но не сам каталог. Команда find с -mindepth 1-это на самом деле правильный путь, но, чтобы избежать сообщения об ошибке, он должен быть присоединен с -параметр maxdepth 1:
find /path/to/dir -mindepth 1 -maxdepth 1 -exec rm -rf '{}' \;
Я с использованием <код>найти</код> команда здесь:
Шаг 1: Найти все файлы и удалить их :
find /path/to/directory/ -type f -exec rm {} \;
Пример:
find /home/user/Desktop/images/ -type f -exec rm {} \;
Шаг 2: Найти все вложенные папки и удалить их :
find /path/to/directory/ -type d -exec rm -R {} \;
Синтаксис rm' таков:
rm [OPTION]... FILE...
Поэтому вы должны явно указать соответствующий путь, например.
rm -r sub_dir/
Вы можете удалить с помощью каталога следующую команду:
sudo rm -r directoryname1/2/3/*
Он будет всю директорию удалить после 3/*.
Пример судо РМ -Р загрузки/песни/*
Это будет удалить все файлы, которые находятся в загрузки/песни
.
Это отлично работает для меня, проверено несколько вариаций работал каждый раз.
Из каталога, который содержит каталог изображений.
rm -frd ./images/*
перед:
images/
|_ header.png
|_ footer.png
|_ subdir/
после:
images/
Для удаления всех файлов и подкаталогов в текущем каталоге, в том числе скрытые, без сообщения об ошибке:
rm -rf .[^.] .??* *
Или, из родительского каталога:
rm -rf images/.[^.] images/.??* images/*
Удалите папку с "тест" и все файлы внутри:
rm -r test
Удалите все файлы внутри, но сохранить в папку на "тест" и:
rm -r test/*