Ответы:
Практикуйте безопасные вычисления. Просто перейдите на один уровень вверх по иерархии и не используйте выражение с подстановочными знаками:
cd ..; rm -rf -- <dir-to-remove>
Два дефиса --
говорят о rm
том, что <dir-to-remove>
это не параметр командной строки, даже если он начинается с тире.
rm ./
вы можете случайно набрать, rm . /
что может привести к катастрофе.
Удаляет все файлы / каталоги ниже текущего.
find -mindepth 1 -delete
Если вы хотите сделать то же самое с другим каталогом, имя которого у вас есть, вы можете просто назвать его
find <name-of-directory> -mindepth 1 -delete
Если вы хотите удалить не только его подкаталоги и файлы, но и сам каталог, опустите -mindepth 1
. Сделайте это без, -delete
чтобы получить список вещей, которые будут удалены.
-mindepth 1
если вы указываете каталог ( find <name-of-directory> -mindepth 1 -delete
). В противном случае Йоханнес прав, он не удалит текущий рабочий каталог (при использовании find -delete
).
find -mindepth 1 -delete
но у меня получилось, illegal option -- m
но она отлично сработала, когда я удалил опцию find . -delete
Я всегда печатаю
rm -rf *
а затем нажмите ESC- * , и bash расширит * до явного списка файлов и каталогов в текущем рабочем каталоге.
Преимущества:
На самом деле, мне это так нравится, что я сделал это поведение по умолчанию для TAB с помощью этой строки в .bashrc:
bind TAB:insert-completions
--
в этом ответе? Я должен сказать, что в целом такой подход потрясающий.
Использовать
rm -rf *
Обновление: .
обозначает текущий каталог, но мы не можем его использовать. Кажется, что команда явно проверяет .
и ..
. Вместо этого используйте подстановочные знаки. Но это может быть рискованно.
Более безопасная версия IMO должна использовать:
rm -ri *
(это запрашивает подтверждение перед удалением каждого файла / каталога.)
Это правильно, что rm –rf .
удалит все в текущем, включая все подкаталоги и их содержимое. Одна точка ( .
) означает текущий каталог. будьте осторожны, rm -rf ..
так как двойная точка ( ..
) означает предыдущий каталог.
При этом, если вы похожи на меня и у вас одновременно открыто несколько окон терминала, вам лучше перестраховаться и использовать. rm -ir .
Давайте посмотрим на аргументы команды, чтобы понять, почему.
Во-первых, если вы посмотрите на rm
страницуman rm
руководства по командам ( в большинстве Unix), вы заметите, что это –r
означает «рекурсивно удалять содержимое каталогов». Таким образом, выполнение в rm -r .
одиночку удалит все в текущем каталоге и все, что ниже него.
В rm –rf .
добавленном -f означает «игнорировать несуществующие файлы, никогда не запрашивать». Эта команда удаляет все файлы и каталоги в текущем каталоге и никогда не предлагает вам подтвердить, что вы действительно хотите это сделать. -f
особенно опасно, если вы запускаете команду от имени привилегированного пользователя, так как вы можете удалить содержимое любого каталога, не имея возможности убедиться, что это действительно то, что вам нужно.
На otherhand, в , что заменяет средства «подсказки перед любым удалением». Это означает, что у вас будет возможность сказать «Ой! Это не то, что я хочу», прежде чем rm удалит все ваши файлы.rm -ri .
-i
-f
Раньше я работал системным администратором, rm -rf /
находясь в системе с полными привилегиями (root). В результате прошло два дня на восстановление системы из резервных копий. Вот почему я сейчас работаю rm -ri
.
убедитесь, что вы находитесь в правильном каталоге
rm -rf *
Я считаю, что этот ответ лучше:
/unix/12593/how-to-remove-all-the-files-in-a-directory
Если вызывается ваш каталог верхнего уровня
images
, запуститеrm -r images/*
. Это использует оператор оболочки оболочки*
для запускаrm -r
для каждого файла или каталога в изображениях.
в основном вы поднимаетесь на один уровень, а затем говорите, что удалите все внутри каталога X. Таким образом, вы по-прежнему указываете, из какой папки следует удалить ее содержимое, что безопаснее, чем просто сказать «удалить все здесь», при этом сохраняя исходную папку (что иногда вы хотите, потому что вы не можете или просто не хотите чтобы изменить существующие разрешения папки)