Что такое рекурсивное удаление файлов

Обновлено: 21.11.2024

Как безопасно удалить все файлы с определенным расширением (например, .bak ) из текущего каталога и всех подпапок с помощью одной командной строки? Просто я боюсь использовать rm, так как однажды я использовал его неправильно, и теперь мне нужен совет.

8 ответов 8

В этом случае вам даже не нужно использовать rm, если вы боитесь. Используйте поиск :

Но используйте его с осторожностью. Выполнить сначала:

чтобы увидеть, какие именно файлы вы удалите.

Кроме того, убедитесь, что -delete является последним аргументом в вашей команде. Если вы поместите его перед аргументом -name *.bak, он удалит все.

Дополнительную информацию см. в разделах man find и man rm, а также см. соответствующий вопрос в SE:

При настройках по умолчанию rm *.bak удалит только все файлы, оканчивающиеся на .bak, в текущем каталоге. Чтобы также делать что-то в подкаталогах, вам нужно было возиться с глобусами, используйте параметр -r или используйте пример поиска.

@Hennes Будьте осторожны с rm -r *.bak ! Он также удаляет каталоги, оканчивающиеся на .bak, со всем их содержимым.

Убедитесь, что -delete является последним аргументом вашей команды. Если вы поместите его перед аргументом -name *.bak, все будет удалено.

Добро пожаловать в аскубунту! Хотя это совершенно правильный ответ, я не думаю, что есть какое-то преимущество в использовании этого вместо флага -delete find . Дополнительную информацию об удалении файлов с помощью find можно найти в разделе руководств GNU.

Это не просто альтернатива, а пример того, как другие команды могут быть объединены с вертикальной чертой '|'. +1

Сначала введите команду shopt -s globstar . Вы можете запустить это в командной строке, и это будет работать только в этом окне оболочки. Вы можете поместить его в свой .bashrc, и тогда все вновь запущенные оболочки подхватят его. Результатом этой команды является рекурсивное сопоставление **/ файлов в текущем каталоге и его подкаталогах (по умолчанию **/ означает то же самое, что и */ : только в ближайших подкаталогах). Затем:

(или gvfs-trash **/*.bak или что там у вас).

Удаление файлов для меня не то, для чего вы должны использовать rm. Вот альтернатива:

Как отмечает Флимм в комментариях:

Пакет trash-cli делает то же самое, что и gvfs-trash, но не зависит от gvfs.

Для этого не нужно создавать псевдоним, потому что в пакете trash-cli есть команда trash , которая делает то, что нам нужно.

Как поясняет Элиа Каган в обширных комментариях, вы также можете сделать это рекурсивным, используя find . В этом случае вы не можете использовать псевдоним, поэтому приведенные ниже команды предполагают, что вы установили trash-cli. Подытожу комментарии Элии:

Эта команда находит и отображает все файлы .bak и символические ссылки в любом месте текущего каталога или его подкаталогов или ниже.

Чтобы удалить их, добавьте -exec к команде корзины:

-xtype f выбирает файлы и символические ссылки на файлы, но не на папки. Чтобы также удалить папки .bak, удалите эту часть и используйте -execdir , что позволяет избежать неустранимых ошибок для файлов .bak внутри каталогов .bak:

Как рекурсивно удалить файлы или папки в Windows из командной строки?

Я нашел это решение, где путь мы вводим в командной строке и запускаем эту команду.

Я привел пример с папкой с расширением файла .svn:

14 ответов 14

Другие ответы мне не подошли, а этот помог:

/q отключает запрос Да/Нет

/s означает удаление файла(ов) из всех подкаталогов.

Я думаю, что мои потребности такие же, как и то, что вы пытаетесь сделать - я пытаюсь удалить все папки .svn в каталоге проекта и во всех подкаталогах. В Windows 2012 этот ответ у меня не работает. Он удаляет папку .svn в текущем каталоге, но не из каких-либо дочерних каталогов.

Выполните следующие шаги:

  1. Откройте командную строку
  2. Измените каталог на требуемый путь

Дайте следующую команду

Дополнительно необходимо использовать параметр /A для удаления также файлов с расширением .svn в текущем каталоге и всех его подкаталогах с установленным скрытым атрибутом, поскольку /AH (все атрибуты, кроме скрытых) является неявным значением по умолчанию, которое отменяется с помощью /A (все атрибуты). Параметр /F следует дополнительно использовать для принудительного удаления файлов .svn с установленным атрибутом только для чтения. Параметр /Q следует использовать для тихого удаления без запроса подтверждения удаления файла. del не удаляет каталоги. Есть rd для удаления каталогов.

Вы можете использовать это в скрипте bat:

Теперь просто измените c:\folder a на расположение вашей папки. Цитата нужна только в том случае, если имя папки содержит пробелы.

Эта команда не работает и выдает ошибку, как показано ниже D:\>rd /s /q "D:\Root a" Система не может найти указанный файл.

напр. RMDIR "C:\tmp" /S

Обратите внимание, что вас спросят, действительно ли вы собираетесь удалить папку "C:\tmp". Комбинация с ключом /Q автоматически удалит папку (например, RMDIR "C:\tmp" /S /Q )

Для удаления файла я написал следующий простой пакетный файл, который рекурсивно удалил все файлы .pdf:

Даже для локального каталога мы можем использовать его как:

То же самое можно применить для удаления каталога, где нам просто нужно заменить del на rmdir.

Если вы хотите рекурсивно удалить конкретное расширение, используйте это:

Вы также можете сделать следующее:

Код /p будет подсказывать вам каждый найденный файл, если вы боитесь удалить что-то, чего делать не следует.

То есть rmdir /S /Q C:\Temp

Я также уже несколько лет использую приведенные ниже варианты, и все работает безупречно.

Ознакомьтесь с другими вариантами с помощью: forfiles /?

Рекурсивно удалить SQM/Telemetry в папке Windows

Рекурсивно удалить файлы Windows TMP

Рекурсивно удалить файлы и папки пользователя TEMP

За полную очистку папки с помощью собственных команд и получение журнала о том, что было сделано.

вот необычный способ сделать это:

предположим, что мы хотим очистить каталог d:\temp

Это очень умное решение, которое решило мою проблему. Я использовал robocopy для копирования своего каталога AppData, не думая о самоссылающемся соединении. Это был единственный способ рекурсивно удалить все скрытые файлы. Никогда не забывайте /xj!

Отлично! Это работает очень, очень хорошо. Я оказался в «цикле» попыток удалить файлы, принадлежащие TrustedInstaller. Проводник предложит получить разрешение, но в конечном итоге операция завершится ошибкой. Сценарий пытался удалить папку Windows автономной установки Windows. Этот метод сработал отлично!

Для скрытых файлов мне пришлось использовать следующее:

Мне помогло

del /s /q "имя_каталога"

Командный процессор Windows cmd.exe имеет две внутренние команды для удаления файлов и папок:

  1. Команда DEL предназначена для удаления файлов с выводом справки по использованию при запуске в окне командной строки Windows либо help del, либо del /? .
  2. Команда RMDIR или с более коротким именем RD предназначена для удаления каталогов с выводом справки об использовании при запуске в окне командной строки Windows либо help rmdir, либо rmdir /? или помогите рд или рд/? .

Удаление всех файлов *.svn во всем дереве папок

В окне командной строки Windows или пакетном файле Windows можно использовать следующую команду для удаления действительно всех файлов, длинное или короткое имя файла 8.3 которых соответствует шаблону подстановки *.svn в каталоге %USERPROFILE%\ Проекты или любой из его подкаталогов:

Использование параметра /A для сопоставления всех файлов независимо от атрибутов файла заменяет неявное значение по умолчанию /A-H для игнорирования скрытых файлов. Таким образом, даже файлы со скрытым атрибутом удаляются этой командой из-за использования параметра /A. Файлы, соответствующие подстановочному шаблону *.svn с установленным скрытым атрибутом, игнорируются, если не используется параметр /A .

Параметр /F принудительно удаляет файлы с расширением .svn, для которых установлен атрибут только для чтения. Будет выведено сообщение об ошибке Доступ запрещен. если файл *.svn имеет установленный атрибут только для чтения и параметр /F не используется при выполнении команды DEL.

Тихая опция /Q предотвращает запрос подтверждения пользователя. Вы уверены (Да/Нет)? .

Опция /S приводит к поиску не только в указанном каталоге, но и во всех его подкаталогах, в том числе с установленным атрибутом hidden, даже если не используется параметр /A для файлов, длинное или короткое 8.3 имя которых совпадает с подстановочным знаком шаблон *.svn .

Два перенаправления >nul и 2>&1 приводят к перенаправлению списка удаленных файлов, выводимых для обработки STDOUT (стандартный вывод), и сообщений об ошибках, выводимых для обработки STDERR (стандартная ошибка), на устройство NUL для подавления каждого вывода.< /p>

Удаляются также жесткие ссылки и символические ссылки, соответствующие подстановочному шаблону *.svn при использовании этой команды, но не файлы, на которые ссылаются, если имя файла не заканчивается на .svn или они находятся в другом дереве каталогов.< /p>

Файлы, соответствующие подстановочному шаблону *.svn, открытые в данный момент процессом (программой/приложением) с использованием разрешений общего доступа, чтобы запретить всем другим процессам удалять файл, если он открыт этим процессом, не удаляются этой командой . Разрешения файловой системы также могут привести к тому, что файлы не будут удалены этой командой.

Удаление всех папок *.svn во всем дереве папок

В окне командной строки Windows можно использовать следующую команду для удаления действительно всех папок, соответствующих длинному или короткому имени папки 8.3 шаблону подстановочных знаков *.svn в каталоге %USERPROFILE%\Projects и всех его подкаталогах:

Та же самая командная строка для использования в пакетном файле, содержащем @echo off вверху:

Выполняется больше cmd.exe в фоновом режиме с параметром /c и командной строкой, указанной между ' в качестве дополнительных аргументов для запуска в фоновом режиме внутренней команды DIR командного процессора Windows для поиска

  • в указанном каталоге %USERPROFILE%\Projects
  • и во всех его подкаталогах из-за параметра /S
  • только для каталогов из-за использования параметра /AD, который включает также соединения и символические ссылки на каталоги
  • соответствие подстановочному шаблону *.svn .

Записи файловой системы (= имена каталогов), соответствующие этим критериям, выводятся в чистом формате из-за параметра /B с полным путем из-за параметра /S для обработки STDOUT фонового командного процесса без окружения " даже для полного имени каталога содержащее пробел или один из этих символов &()[]<>^=;!'+,`~ . Сообщение об ошибке, выводимое DIR при отсутствии имени, соответствующего этим критериям, перенаправляется на устройство NUL, чтобы подавить его.

Оператор перенаправления > должен быть экранирован символом вставки ^ в командной строке FOR, чтобы он интерпретировался как литеральный символ, когда обработчик команд Windows анализирует эту командную строку перед выполнением команды FOR, которая выполняет встроенную командную строку dir в отдельном командном процессе. запущен в фоновом режиме.

Выходной список имен каталогов с их полными путями для обработки STDOUT захватывается программой cmd.exe, обрабатывающей пакетный файл, и обрабатывается FOR после того, как запущенная cmd.exe закрывается.

Опция FOR /F delims= определяет пустой список строковых разделителей, в результате чего каждое полное имя каталога полностью одно за другим назначается указанной переменной цикла I .

Выполняется команда RD для тихого удаления из-за опции /Q каталога со всеми файлами и всеми подкаталогами из-за опции /S .

Также удаляются соединения (мягкие ссылки) и символические ссылки на каталоги, соответствующие шаблону подстановки *.svn при использовании этой команды, но не каталоги, на которые ссылаются, если имя каталога не заканчивается на .svn или находится в другом дерево каталогов.

Каталог, соответствующий подстановочному шаблону *.svn, в котором файл в данный момент открыт процессом (программой/приложением) с использованием разрешений общего доступа, чтобы запретить всем другим процессам удалять файл, пока он открыт этим процессом. не удаляется этой командой и, конечно, также нет каталога выше каталога, содержащего файл, который нельзя удалить в данный момент. Разрешения файловой системы также могут привести к тому, что каталоги не будут удалены этой командой. По умолчанию Windows также предотвращает удаление каталога, который является текущим рабочим каталогом любых запущенных процессов.

Другая полезная информация об удалении файлов и папок

Путь к каталогу %USERPROFILE%\Projects\ можно полностью удалить или заменить на .\ в приведенных выше командах, чтобы удалить файлы и папки, соответствующие шаблону подстановки *.svn в текущем каталоге исполняемого процесса командного процессора Windows. команды.

Путь к каталогу %USERPROFILE%\Projects\ можно заменить на %~dp0, чтобы удалить файлы и папки, соответствующие шаблону подстановки *.svn в каталоге пакетного файла при использовании командных строк выше в независимом пакетном файле какой каталог является текущим каталогом при выполнении пакетного файла.

Путь к каталогу %USERPROFILE%\Projects\ также можно заменить относительным путем. Дополнительные сведения об относительных путях см. в документации Microsoft об именовании файлов, путей и пространств имен.

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

Запустить mklink /? для справки о том, как создавать ссылки на файлы и каталоги, очень хорошо объясненные MKLink.

Эта опция рекурсивно удаляет каталоги и их содержимое из списка аргументов, передаваемого команде rm. Обычно пользователю предлагается удалить любые защищенные от записи файлы в каталогах, если только конечный пользователь не использует параметр -f.

Что такое рекурсивное удаление?

Рекурсивное удаление имеет смысл только в том случае, если целью удаления является папка или несколько папок. Рекурсивное удаление файлов означает удаление содержимого папки перед удалением самой папки. … По сути, это означает удалить все, что находится внутри папки, которую я удаляю, чтобы я мог удалить саму папку.

Как удалить рекурсивный каталог в Unix?

Чтобы удалить непустой каталог, используйте команду rm с параметром -r для рекурсивного удаления. Будьте очень осторожны с этой командой, потому что использование команды rm -r удалит не только все в указанном каталоге, но и все в его подкаталогах.

Как удалить рекурсивный файл?

Чтобы удалить каталог и все его содержимое, включая подкаталоги и файлы, используйте команду rm с рекурсивным параметром -r . Каталоги, удаленные с помощью команды rmdir, не могут быть восстановлены, равно как и каталоги и их содержимое, удаленные с помощью команды rm -r.

Как удалить рекурсивный файл в Linux?

Как удалить каталоги (папки)

  1. Чтобы удалить пустой каталог, используйте либо rmdir, либо rm -d, за которым следует имя каталога: rm -d имя-каталога rmdir-имя-каталога.
  2. Чтобы удалить непустые каталоги и все файлы в них, используйте команду rm с параметром -r (рекурсивный): rm -r имя_каталога.

Какая команда используется для удаления файла?

Команда rm удаляет файлы в Linux. Команда отменяет связь данных с именем файла, позволяя пользователю перезаписать это конкретное место хранения.

Что означает удалить папку?

При удалении папки удаляется и все ее содержимое. Вы можете получить диалоговое окно с вопросом, хотите ли вы переместить файл в корзину. Если это произойдет, скажите «да». Если вы не получили диалоговое окно, файл все равно был отправлен в корзину. (Эквивалент для Mac называется Trash.)

В чем разница между RM и RM R?

rm удаляет файлы, а -rf относится к параметрам: -r рекурсивно удалять каталоги и их содержимое, -f игнорировать несуществующие файлы, никогда не запрашивать. rm — это то же самое, что и «del». … rm -rf добавляет флаги «рекурсивный» и «принудительный». Он удалит указанный файл и проигнорирует любые предупреждения при этом.

Как удалить все файлы по имени в Linux?

Введите команду rm, пробел и имя файла, который вы хотите удалить. Если файл находится не в текущем рабочем каталоге, укажите путь к местоположению файла. Вы можете передать более одного имени файла в rm . При этом будут удалены все указанные файлы.

Как очистить папку в Linux?

Чтобы удалить пустой каталог, используйте параметр -d ( –dir ), а для удаления непустого каталога и всего его содержимого используйте параметр -r ( –recursive или -R ). Параметр -i указывает rm запрашивать подтверждение удаления каждого подкаталога и файла.

Как удалить все файлы определенного типа?

PITA, и когда он выполнит свою работу всего за несколько секунд, нажмите Ctrl-A, чтобы выбрать все, щелкните правой кнопкой мыши выбранные файлы, затем нажмите "Удалить", чтобы закончить их.

Как удалить все файлы в папке?

Еще один вариант — использовать команду rm для удаления всех файлов в каталоге.

Процедура удаления всех файлов из каталога:

  1. Откройте терминальное приложение.
  2. Чтобы удалить все в каталоге, запустите: rm /path/to/dir/*
  3. Чтобы удалить все подкаталоги и файлы: rm -r /path/to/dir/*

Как удалить рекурсивный файл в Windows?

Перейдите к папке, которую вы хотите удалить (со всеми ее файлами и подпапками). Используйте путь cd, например. cd o:backupstest для этого. Команда DEL /F/Q/S *. * > NUL удаляет все файлы в этой структуре папок и пропускает вывод, что еще больше улучшает процесс.

Как удалить старые файлы в Linux?

Утилита find в Linux позволяет передавать множество интересных аргументов, в том числе один для выполнения другой команды для каждого файла. Мы воспользуемся этим, чтобы выяснить, какие файлы старше определенного количества дней, а затем воспользуемся командой rm для их удаления.

Как отменить связь файлов в Linux?

Как удалить файлы. Вы можете использовать команду rm (удалить) или unlink, чтобы удалить или удалить файл из командной строки Linux. Команда rm позволяет удалить сразу несколько файлов. С помощью команды unlink вы можете удалить только один файл.

Вы можете удалить определенные файлы или фотографии в Microsoft OneDrive или удалить целые папки и все элементы в них. При необходимости вы можете восстановить удаленные файлы из корзины OneDrive.

Примечание. Если вы хотите удалить файлы с локального компьютера, оставив их в OneDrive, или наоборот, см. раздел Удаление элементов из OneDrive, с жесткого диска или из обоих.

Перейдите на веб-сайт OneDrive. Возможно, вам потребуется войти в систему с помощью учетной записи Майкрософт либо рабочей или учебной учетной записи.

Выберите файлы или папки, которые хотите удалить, указывая на каждый элемент и устанавливая флажок в появившемся кружке. (На левом изображении ниже показаны элементы в представлении списка, на правом изображении показаны элементы в виде плиток или фотографий.)

Чтобы выбрать все файлы в папке, щелкните кружок слева от строки заголовка или нажмите CTRL + A на клавиатуре. (Вы также можете выбрать несколько файлов одновременно, выбрав один файл, прокрутив список вниз, затем, удерживая нажатой клавишу Shift, щелкните левой кнопкой мыши последний элемент, который вы хотите выбрать.)

На панели в верхней части страницы выберите Удалить. (Вы также можете щелкнуть правой кнопкой мыши выбранный файл или папку и выбрать Удалить.)

Примечание. Если вы не видите значок "Удалить" на верхней панели навигации или щелкаете правой кнопкой мыши выбранный элемент, возможно, у вас нет разрешения на удаление этого файла или папки.

Чтобы удалить папку, а не только ее содержимое, вам может потребоваться подняться или вернуться на уровень выше, чтобы выбрать всю папку.

Личная папка OneDrive не обязательно должна быть пустой перед ее удалением. Однако вы можете заранее проверить, нет ли в нем файлов или подпапок, которые вы хотите сохранить.

В OneDrive для рабочих или учебных учетных записей папка должна быть пустой, прежде чем ее можно будет удалить, если ваш администратор включил хранение в OneDrive для рабочих или учебных учетных записей.

Очистить корзину

Ваши удаленные файлы и папки попадают в корзину OneDrive, из которой при необходимости вы можете восстановить файлы.

Сначала выберите "Корзина" на панели навигации OneDrive слева.

Чтобы безвозвратно удалить определенные файлы или папки из корзины, выберите эти элементы, а затем выберите "Удалить" в верхней панели навигации.

Чтобы навсегда удалить всю корзину сразу, выберите Очистить корзину на верхней панели навигации.

Примечание. После того, как вы удалите файлы из корзины OneDrive, может возникнуть небольшая задержка, которая отразится на доступности хранилища вашей учетной записи OneDrive.

Удалить элементы из OneDrive, с жесткого диска или с обоих

Удалить из OneDrive, но не с жесткого диска

Если вы хотите сохранить файл, фотографию или папку на своем компьютере, но не в OneDrive, используйте Проводник (или Mac Finder, если вы работаете на Mac), чтобы переместить файл из папки OneDrive в другую папку на жестком диске.

Удалить с жесткого диска, но не с OneDrive

Если вы хотите сохранить файл, фотографию или папку в OneDrive, но не на своем компьютере (поскольку вы не хотите, чтобы они занимали место), поместите файл в папку OneDrive, а затем включите Файлы. On-Demand (Windows) (или Files On-Demand (Mac)). Вы по-прежнему будете видеть файл в папке OneDrive на своем компьютере, но он не займет места на жестком диске.

Удалить из OneDrive и с жесткого диска

Если вы синхронизировали OneDrive с рабочим столом или жестким диском, используйте Проводник (или Mac Finder, если вы работаете на Mac), чтобы найти и удалить файл, фотографию или папку.

Элементы не могут быть удалены из вашего списка недавних, только удалены.

Примечание. Эти инструкции применимы, только если вы вошли в систему с учетной записью Microsoft (OneDrive для дома). Они не применяются к OneDrive для работы или учебы.

Чтобы удалить элементы из списка "Последние", выберите файлы или папки, которые хотите удалить, наведя указатель мыши на каждый элемент и установив флажок в появившемся кружке. На панели в верхней части страницы выберите Удалить.

Чтобы удалить элемент из списка недавних, перейдите в папку, в которой он находится. Чтобы найти папку, просмотрите сведения об элементе, чтобы увидеть точный путь.

Откройте общий вид и выберите файлы или папки, которые хотите удалить, наведя указатель мыши на каждый элемент и установив флажок в появившемся кружке.

Чтобы удалить элемент, которым поделились другие пользователи, выберите этот элемент, затем выберите Удалить из общего списка на панели в верхней части страницы.

Чтобы удалить элемент из списка "Мне предоставлен общий доступ", выберите его, выберите "Информация" в правом верхнем углу, чтобы открыть панель сведений, а затем выберите "Управление доступом".

Для файлов, к которым предоставлен доступ по ссылке, выберите «Все, у кого есть эта ссылка». а затем выберите Удалить ссылку.

Для файлов, которыми поделились с другими людьми, выберите «Может редактировать» или «Может просматривать» под их именем, а затем выберите «Закрыть общий доступ».

Если вы не видите общую информацию, возможно, у вас выбрано несколько элементов. Выберите только один элемент, чтобы изменить общий доступ.

Выберите папку OneDrive, выберите элементы, которые хотите удалить, и нажмите клавишу Delete на клавиатуре.

Откройте окно Mac Finder.

Перейдите в нужную папку OneDrive и выберите элемент или элементы, которые хотите удалить.

Нажмите правой кнопкой мыши элемент или элементы, затем выберите «Переместить в корзину». Вы также можете перетащить элемент или элементы из папки в корзину.

Нужна дополнительная помощь?

Обратитесь в службу поддержки
Чтобы получить помощь по учетной записи Microsoft и подпискам, посетите страницу Справка по учетным записям и выставлению счетов.

Для получения технической поддержки перейдите в раздел «Связаться со службой поддержки Майкрософт», введите свою проблему и выберите «Получить помощь». Если вам по-прежнему нужна помощь, выберите «Связаться со службой поддержки», чтобы получить лучший вариант поддержки.

Читайте также: