Как я могу удалить все файлы и подкаталоги из текущего каталога, включая текущий каталог?
Как удалить все файлы из текущего каталога, включая текущий каталог?
Ответы (6)
Под bash с инструментами GNU я бы сделал так (в большинстве случаев должно быть безопасно):
rm -rf -- "$(pwd -P)" && cd ..
не под bash и без инструментов GNU я бы использовал:
TMP=`pwd -P` && cd "`dirname $TMP`" && rm -rf "./`basename $TMP`" && unset TMP
почему это более безопасно:
- заканчивайте список аргументов
--в случаях, когда наш каталог начинается с тире (не bash:./перед именем файла) pwd -Pне толькоpwdв тех случаях, когда мы находимся не в реальном каталоге, а в символической ссылке, указывающей на него."s вокруг аргумента в случаях, когда каталог содержит пробелы
некоторая случайная информация (версия bash):
cd ..в конце можно опустить, но иначе вы оказались бы в несуществующем каталоге...
EDIT: как заметил kmkaplan, -- не является необходимым, так как pwd возвращает полное имя пути, которое всегда начинается с / в UNIX.
olddir=`pwd` && cd .. && rm -rf "$olddir"
Требуется cd .., иначе произойдет сбой, поскольку вы не можете удалить текущий каталог.
Я думаю, что это было бы возможно в DOS/Windows CMD, но я не могу найти способ передать данные между командами. Кто-то еще может знать исправление для этого?
FOR /F %i IN ('cd') DO SET MyDir=%i | CD .. | RD /S %MyDir%
операционная система? в материалах на основе *NIX вы ищете «каталог rm -rf/»
ПРИМЕЧАНИЕ: флаг «-r» для «рекурсивного» может быть опасным!
Вы просто можете вернуться в родительскую папку целевой папки, а затем использовать «rm -rf yourFolder». или вы можете использовать «rm -rf *», чтобы удалить все файлы и подпапки из текущей папки.