Я пытаюсь удалить все файлы и подкаталоги в каталоге. Раньше я rm -r
удалял все файлы, но хочу удалить все файлы и подкаталоги, кроме самого верхнего каталога.
Например, у меня есть верхний каталог, как images
. Он содержит файлы header.png
, footer.png
и подкаталог.
Теперь я хочу , чтобы удалить header.png
, footer.png
и подкаталог, но не images
.
Как я могу сделать это в Linux?
rm -Rf
все файлы и каталоги там.Ответы:
Если ваша директория верхнего уровня называется
images
, тогда запуститеrm -r images/*
. При этом используется оператор glob оболочки*
для запускаrm -r
в каждом файле или каталогеimages
.источник
Чтобы удалить скрытые файлы, вы должны указать:
С оболочками, чьи глобусы включают
.
и..
, это приведет к ошибке вродено это удалит скрытые файлы.
Подход без сообщения об ошибке заключается в использовании поиска / удаления с помощью mindepth. Это гну-найти.
В вашей находке может отсутствовать предикат
-mindepth
or-delete
, в этом случае вы можете сделать следующее:источник
rm .*
не удаляет.
или..
и не имеет по крайней мере с 1994 года для утилитами GNU и , вероятно , с конца 70 - х годов для UNIX . Крайне маловероятно, что вы найдете систему, котораяrm .*
пересекает файловую систему вверх за пределами музея.Чтобы удалить все файлы и каталоги (включая скрытые ) в каталоге, вы можете попробовать следующее:
использовать
ls -Ab
для сопоставления всех файлов / каталоговиспользовать
find
для сопоставления всех файлов / каталоговили, если ваш
find
не поддерживает-delete
:удалить папку, а затем воссоздать ее
в баш,
источник
rm -rf *
не является безопасной, если у вас нет сведений о файлах в каталоге, поскольку файл, начинающийся с-
(дефис), будет интерпретироваться какrm
флаг ...rm -rf ./* ./.*
Чтобы рекурсивно удалить все обычные файлы внутри каталога, эта команда (при условии, что GNU или FreeBSD
find
) достаточно хороша:Это оставляет все нестандартные файлы, такие как символические ссылки (указывают ли они на обычные файлы или нет), каталоги, fifos, сокеты, устройства ...
Смотрите также:
удалить файлы любого типа, кроме каталога .
источник
Попробуйте эту версию:
источник
Я использую
find
команду здесь:Шаг 1: Найдите все файлы и удалите их:
Пример:
Шаг 2: Найдите все подкаталоги и удалите их:
источник
find /path/to/directory/ -type d
Включает.
так, удалит сам каталог. Вы должны также использовать-mindepth
переключатель, как говорили другие.Вопрос заключался в том, чтобы очистить каталог = удалить содержимое каталога, включая скрытые файлы, но не сам каталог. Команда find с -mindepth 1 на самом деле правильный путь, но чтобы избежать сообщений об ошибках, ее необходимо объединить с -maxdepth 1:
источник
Синтаксис rm:
Таким образом, вы должны указать соответствующий путь явно, например,
источник
Вы можете удалить каталог, используя следующую команду:
После 3 / * будет удален весь каталог.
Пример sudo rm -r Downloads / song / *
Будут удалены все файлы, которые находятся внутри
Downloads/song
.источник
Это прекрасно работает для меня, проверено несколько вариантов работы каждый раз.
Из каталога, в котором находится каталог изображений.
до:
после:
источник
mkdir images/.somedir
;touch images/.somefile
)Чтобы удалить все файлы и подкаталоги в текущем каталоге, включая скрытые, без сообщения об ошибке :
Или из родительского каталога:
С https://serverfault.com/a/47940/269538 .
источник
Другой вариант:
источник: https://askubuntu.com/a/552834/56648
источник
Удалите папку «test» и все файлы внутри:
Удалите все файлы внутри, но сохраните папку «test»:
источник
Перейдите в папку и выполните следующую команду:
источник