Я всегда предполагал, что это должно было предложить разный каталог, как, "и т.д. = все остальные мы не потрудились категоризировать далее"; я лично еще использую такую папку также на моем корневом каталоге также (не названный и т.д., но "весла" =" (что-то)").
Если Ваш каталог верхнего уровня называют images
, затем выполненный rm -r images/*
. Это использует оператор шарика оболочки *
работать rm -r
на каждом файле или каталоге в images
.
синтаксис комнаты:
rm [OPTION]... FILE...
Так, необходимо заявить соответствующий путь явно, например.
rm -r sub_dir/
Для удаления скрытых файлов необходимо указать:
rm -r images/* images/.*
С оболочками, шарики которых включают .
и ..
, это приведет к ошибке как
rm: cannot remove `.' directory `images/.'
rm: cannot remove `..' directory `images/..'
но это удалит скрытые файлы.
Подход без errormessage должен использовать, находят/удаляют с mindepth. Это - находка гну.
find images -mindepth 1 -delete
Вашей находке может недоставать -mindepth
или -delete
предикат, в этом случае, Вы могли сделать:
find images/. ! -name . -prune -exec rm -rf {} +
rm .*
не удаляет .
или ..
и не имеет с тех пор, по крайней мере, 1994 для GNU utils и вероятно с конца 70-х для UNIX. Крайне маловероятно, что Вы найдете систему где rm .*
пересекает файловую систему вверх за пределами музея.
– terdon♦
08.12.2015, 13:36
Для удаления всех файлов и каталогов (включая скрытые) в каталоге можно попробовать следующее:
использовать ls -Ab
соответствовать всем файлам/каталогам
cd dir_name && rm -rf `ls -Ab`
использовать find
соответствовать всем файлам/каталогам
find dir_name -mindepth 1 -delete
или, если Ваш find
не поддерживает -delete
:
find dir_name -mindepth 1 -exec rm -rf {}
удалите папку, затем воссоздайте ее
rm -rf dir_name && mkdir dir_name
в ударе,
shopt -s dotglob
rm -rf dir_name/*
rm -rf *
не безопасно, если Вы не знаете о файлах в каталоге, потому что файл, запускающийся с -
(дефис) будет интерпретироваться как rm
флаг...
– VasyaNovikov
08.04.2017, 16:52
rm -rf ./* ./.*
– VasyaNovikov
08.04.2017, 16:54
Я использую команду find
здесь:
Шаг 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 -r test
Удалите все файлы внутри, но сохраняйте папку «Тест»:
rm -r test/*
Вы можете удалить каталог, используя следующую команду:
sudo rm -r directoryname1/2/3/*
После 3/* будет удален весь каталог.
Пример sudo rm -r Downloads/song/*
Удаляются все файлы, находящиеся в пределах Downloads/songs
.
Чтобы удалить все обычные файлы рекурсивно внутри каталога, достаточно этой команды (при условии, что GNU или FreeBSD find
):
find . -type f -delete
Остаются все нерегулярные файлы, такие как симлинки (независимо от того, указывают они на обычные файлы или нет), каталоги, fifos, сокеты, устройства....
См. также:
find . ! -type d -delete
для удаления файлов любого типа, кроме каталога.
Вопрос состоял в том, чтобы очистить каталог = удалить содержимое каталога, включая скрытые файлы, но не сам каталог. Команда find с -mindepth 1 на самом деле является правильным способом, но во избежание ошибки сообщения он должен быть объединен с -maxdepth 1:
find /path/to/dir -mindepth 1 -maxdepth 1 -exec rm -rf '{}' \;
Это отлично работает для меня, каждый раз проверял несколько вариантов.
Из каталога, в котором находится каталог изображений.
rm -frd ./images/*
до:
images/
|_ header.png
|_ footer.png
|_ subdir/
после:
images/
Чтобы удалить все файлы и подкаталоги в текущем каталоге, включая скрытые, без сообщения об ошибке:
rm -rf .[^.] .??* *
Или из родительского каталога:
rm -rf images/.[^.] images/.??* images/*