Как удалить все файлы из текущего каталога, включая текущий каталог? - PullRequest
5 голосов
/ 15 февраля 2009

Как удалить все файлы и подкаталоги из текущего каталога, включая текущий каталог?

Ответы [ 6 ]

12 голосов
/ 15 февраля 2009

В 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

4 голосов
/ 15 февраля 2009
olddir=`pwd` && cd .. && rm -rf "$olddir"

Требуется cd .., иначе произойдет сбой, поскольку вы не можете удалить текущий каталог.

1 голос
/ 15 февраля 2009

Я думаю, что это возможно в DOS / Windows CMD, но я не могу найти способ передачи данных между командами. Кто-то еще может знать, как это исправить?

FOR /F %i IN ('cd') DO SET MyDir=%i | CD .. | RD /S %MyDir%
1 голос
/ 15 февраля 2009
rm -fr "`pwd`"
0 голосов
/ 19 октября 2014

Вы можете просто вернуться в родительскую папку целевой папки, а затем использовать 'rm -rf yourFolder'. или вы можете использовать 'rm -rf *', чтобы удалить все файлы и подпапки из текущей папки.

0 голосов
/ 15 февраля 2009

операционная система? на материале * NIX вы ищете каталог 'rm -rf /'

ПРИМЕЧАНИЕ: флаг '-r' для 'рекурсивный' может быть опасным!

...