Я знаю, что это удалит все в подкаталоге и ниже:
rm -rf <subdir-name>
Но как удалить все в текущем каталоге, а также все подкаталоги под ним и содержимое всех этих подкаталогов?
Я знаю, что это удалит все в подкаталоге и ниже:
rm -rf <subdir-name>
Но как удалить все в текущем каталоге, а также все подкаталоги под ним и содержимое всех этих подкаталогов?
Ответы:
Практикуйте безопасные вычисления. Просто перейдите на один уровень вверх по иерархии и не используйте выражение с подстановочными знаками:
Два дефиса
--
говорят оrm
том, что<dir-to-remove>
это не параметр командной строки, даже если он начинается с тире.источник
rm ./
вы можете случайно набрать,rm . /
что может привести к катастрофе.Удаляет все файлы / каталоги ниже текущего.
Если вы хотите сделать то же самое с другим каталогом, имя которого у вас есть, вы можете просто назвать его
Если вы хотите удалить не только его подкаталоги и файлы, но и сам каталог, опустите
-mindepth 1
. Сделайте это без,-delete
чтобы получить список вещей, которые будут удалены.источник
-mindepth 1
если вы указываете каталог (find <name-of-directory> -mindepth 1 -delete
). В противном случае Йоханнес прав, он не удалит текущий рабочий каталог (при использованииfind -delete
).find -mindepth 1 -delete
но у меня получилось,illegal option -- m
но она отлично сработала, когда я удалил опциюfind . -delete
Я всегда печатаю
а затем нажмите ESC- * , и bash расширит * до явного списка файлов и каталогов в текущем рабочем каталоге.
Преимущества:
На самом деле, мне это так нравится, что я сделал это поведение по умолчанию для TAB с помощью этой строки в .bashrc:
источник
--
в этом ответе? Я должен сказать, что в целом такой подход потрясающий.Использовать
Обновление:
.
обозначает текущий каталог, но мы не можем его использовать. Кажется, что команда явно проверяет.
и..
. Вместо этого используйте подстановочные знаки. Но это может быть рискованно.Более безопасная версия IMO должна использовать:
(это запрашивает подтверждение перед удалением каждого файла / каталога.)
источник
Это правильно, что
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
.источник
Как насчет:
источник
Не делай этого! Это опасно! УБЕДИТЕСЬ, ЧТО ВЫ В ПРАВИЛЬНОМ КАТАЛОГЕ!
источник
убедитесь, что вы находитесь в правильном каталоге
источник
Это простейшее безопасное и общее решение, вероятно:
источник
Я считаю, что этот ответ лучше:
/unix/12593/how-to-remove-all-the-files-in-a-directory
в основном вы поднимаетесь на один уровень, а затем говорите, что удалите все внутри каталога X. Таким образом, вы по-прежнему указываете, из какой папки следует удалить ее содержимое, что безопаснее, чем просто сказать «удалить все здесь», при этом сохраняя исходную папку (что иногда вы хотите, потому что вы не можете или просто не хотите чтобы изменить существующие разрешения папки)
источник