Удалить все файлы с расширением с

Обновлено: 06.07.2024

Если я установлю текущий / рабочий каталог (перейдя к нему с помощью cd ) в какой-то конкретный каталог, а затем введите:

Что будет делать эта команда? Правда ли, что приведенная выше команда удалит только файлы с расширением .xvg только в рабочем каталоге?

Я нервничал, пытаясь это сделать, прежде чем спрашивать, потому что я хочу быть абсолютно уверен, что приведенная выше команда удалит только .xvg файлы, расположенные в рабочем каталоге .

Да, rm *.xvg будут удаляться только файлы с указанным расширением в вашем текущем каталоге.

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

Если вы немного опасаетесь ввода rm команды, вы можете сделать 2 вещи:

введите, ls *.xvg чтобы увидеть список файлов, которые будут затронуты этой командой.

Если у вас не много файлов, вы всегда можете также использовать -i переключатель командной строки для rm (также существует для cp и mv ). Использование rm -i *.xvg предложит вам для каждого отдельного файла, если это нормально, чтобы удалить его, так что вы можете быть уверены, что ничего, что вы не ожидали, было удалено. (Это будет утомительно, если у вас много файлов, хотя :)

Также: rm -f удалить также скрытые файлы. И rm -R -f убрать также каталоги.

Вам не нужно переходить в каталог, просто используйте

В случае, если у вас есть опечатка или похожая ошибка в пути, где / som / dir не существует:

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

Альтернативным способом было бы использовать find:

find / some / dir / -maxdepth 1 -type f -name "* .xvg" -delete работал для меня! используйте -maxdepth "n", чтобы удалить соответствующие файлы в подкаталоге, если указан путь

Да, rm *.xvg удаляются только файлы, оканчивающиеся .xvg на текущий каталог. Вот почему

Когда вы набираете команду, подобную этой, работа распределяется между используемой оболочкой (предположим, bash) и двоичным файлом команды.

Вы можете найти двоичный файл, набрав which rm . Эта маленькая программа заботится о том, чтобы не связывать файлы. Такие программы могут быть запущены из командной строки и могут читать список аргументов prog arg1 arg2 arg3 при запуске. В случае rm , они интерпретируются как список полностью определенных имен файлов, которые будут удалены. Так что, если вы находитесь в каталоге, содержащем файл foo.bar , ввод delete 'foo.*' приведет к rm: foo.*: No such file or directory . Обратите внимание на одинарные кавычки вокруг шаблона файла, они говорят оболочке передавать аргумент в оболочку как она есть.

Однако, если вы введете rm *.bar в тот же каталог, файл будет удален. Здесь происходит то, что ваша оболочка, то есть программа, которую вы используете для ввода команд, выполняет некоторые преобразования перед передачей аргументов в команду. Один из них называется «расширение имени файла», иначе известный как «глобализация». Вы можете увидеть список расширений имени bash-файла здесь . Одним из наиболее распространенных расширений является * расширение имен файлов в текущем каталоге.

Простой способ взглянуть на глобусы в работе - использовать echo , который возвращает все аргументы, переданные ему через оболочку. Таким образом, ввод echo * в том же каталоге будет выводить foo.bar . Поэтому, когда вы печатаете rm *.bar , на самом деле происходит то, что оболочка расширяет список аргументов foo.bar , а затем передает это rm команде.

Есть несколько способов контроля за сгущением. Например, в последних версиях bash вы можете включить опцию globstar, которая будет выполнять рекурсивное расширение. При наборе echo **/*.bar будет показан список всех файлов, заканчивающихся .bar во всех подпапках. Поэтому ввод rm **/*.bar в globstar с включенным bash действительно рекурсивно удалит все соответствующие файлы в подпапках.

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

очень срочно надо. помогите плизз.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

На заданном логическом диске переместить все файлы с заданными расширениями в новый каталог
Народ, кто может помочь с выполнением?! Задание: Разработать сценарий, где на заданном.

В заданном каталоге и его подкаталогах найти и удалить файлы c указанным именем и с определёнными расширениями
Здравствуйте) Вот такое задание у меня: В заданном каталоге и его подкаталогах найти и удалить.

Удалить файлы с чётными именами
Здравствуйте, Нужна помощь в написании bat-ника, который удаляет файлы с чётными именами. .


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

К сожалению, не могу дать ссылку на этот сайт, но думаю, что автору будет приятно, что его инструкцию увидят многие. Может быть это подойдет? Или я вас неправильно понимаю.

Как запустить командную строку при помощи клавиатуры? Или, как вызвать командную строку?
Запускается нажатием клавиш Win+R

Как запустить Диспетчер задач из командной строки?
Нажать сочетание клавиш Win+R и набрать в появившейся командной строке - taskmgr Потом нажать Enter.

Как вызвать paint через run:
Если вы уже вызвали командную строку нажатием Win+R осталось ввести: mspaint и нажать Enter.
Часто, это удобно после того как вы сделали фото рабочего стола, при помощи PrintScreen.

Как свернуть командную строку?
Свернуть - это, пожалуй, врядли. а вот закрыть можно, прижав слегка клавишу Esc.

Как вызвать Excel из командной строки?
Набрать в строке excel потом нажать Enter.

Как в командной строке вызвать блокнот?
Командная строка вызвана! Теперь набираем notepad и жмем Enter. Как и во всех других случаях, тем, кто часто использует этот самый простой текстовый редактор, пригодится!

Синтаксис
del [диск:][путь] имя_файла [ . ] [/p] [/f] [/s] [/q] [/a[:атрибуты]]
erase [диск:][путь] имя_файла [ . ] [/p] [/f] [/s] [/q] [/a[:атрибуты]]

Задание расположения и имени файла для удаления. Параметр имя_файла является обязательным. Допускается использование нескольких имен файлов. Имена файлов следует разделять пробелом, запятой или точкой с запятой.

Задание удаления с подтверждением для каждого файла.

Задание удаления файлов с атрибутом "Только чтение".

Удаление заданных файлов в каталоге и всех его подкаталогах. Выводит имена удаляемых файлов.

Задание автоматического режима. Не выводится подтверждение на удаление.

Удаление файлов с заданными атрибутами.

Задание следующих атрибутов файла.


Атрибут Описание
r Только чтение
a Архивный
s Системный
h Скрытый
- Префикс "нет"

Отображение справки в командной строке.

Примеры
Чтобы удалить все файлы из папки Test на диске C, введите одну из следующих команд:
del c:\test
del c:\test\*.*

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

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

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

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

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

Смотрите man find и man rm для получения дополнительной информации, а также увидеть этот связанный вопрос по SE:

@ Bolt64 Вы rm *.bak не будете работать для подкаталогов. С настройками по умолчанию rm *.bak будут удалены только все файлы, заканчивающиеся на .bak в текущем каталоге. Чтобы также выполнять действия в подкаталогах, которые вам либо понадобились для работы с глобусами, используйте опцию -r или пример поиска. @Hennes Будь осторожен с rm -r *.bak ! Он также удаляет каталоги, заканчивающиеся .bak всем их содержимым. Убедитесь, что -delete это последний аргумент в вашей команде. Если вы поставите его перед -name *.bak аргументом, он удалит все. Вы, вероятно, правы, это просто альтернативное решение, возможно, более сырое;) Это не просто альтернатива, а пример того, как другие команды могут быть объединены вместе с каналом '|'. +1 Эти альтернативные решения работают в других средах, в которых отсутствует -delete (например, cygwin)

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

(или gvfs-trash **/*.bak или что у тебя).

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

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

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

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

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

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

Для того, чтобы удалить их, добавьте к -exec с trash командой:

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

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

Это может быть достигнуто в пакетном или VBScript сценариях?

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

Что вы можете предложить?

Вы имеете в виду рекурсивное удаление? Это действительно может быть сделано. Нечто подобное rd /s /q "c:\folder a выполнит рекурсивное удаление всех файлов и папок внутри Folder A Я мог бы сделать, я не знаю, как писать сценарии в powershell, но у меня были сценарии powershell для предыдущего запуска. Сейчас самое подходящее время для изучения, я бы исследовал синтаксис batch и vbs для унаследованных целей, но потратил больше времени на изучение PS. У меня еще не было возможности проверить код, хотя я уверен, что он будет работать. Я вернусь и выберу наиболее подходящий ответ на мой первоначальный запрос. Я буду второй рекомендацией BigHomie - я только что изучил PowerShell и должен сказать, что он довольно аккуратный - не слишком сложный, хорошее оружие в арсенале любого кодера. Я использую это довольно часто сейчас.

Это можно сделать с помощью PowerShell :

Эта команда получает каждый дочерний элемент $path , выполняет метод удаления для каждого элемента и работает довольно быстро. Структура папок осталась нетронутой.

Если у вас могут быть файлы без расширения, используйте

Похоже, что -File параметр мог быть добавлен после PowerShell v2. Если это так, то

Это должно сделать трюк для файлов с расширением.

Get-ChildItem -Path D: \ EmptyThisFolder -Include . -File -Recurse | foreach Почему вы используете -Include . ?? Вот в чем проблема. Они не могут реализовать powershell --version ? Разве они не могут использовать номер версии с положительными цифрами? Это просто безумие. Более 1300 голосов за вопрос о том, как узнать номер версии программы? @demonicdaron не должен; Вопрос ОП касался сохранения структуры папок.

Короткая и удобная PowerShell. Не уверен, с какой низшей версией PS он будет работать.

Это должен быть принятый ответ, вы можете даже просто напечатать, rm * так как на самом деле не рекомендуется форсировать (в любом случае в диалоговом окне подтверждения есть опция «Да для всех»).

Вы можете сделать это с помощью del команды:

/S Переключатель , чтобы удалить только файлы рекурсивно.

Да. Вы можете добавить /P опцию, чтобы она попросила вас подтвердить каждое удаление, чтобы проверить это. спасибо плохо попробуй! надеюсь, сэкономит массу времени! Да. А для удаления скрытых и системных файлов сделайте attrib -s -r -h Folder\*.* /s /d перед удалением. А для разрешений используйте takeown команду. И вы можете использовать / Q, чтобы НЕ запрашивать подтверждение при использовании подстановочных знаков.

Читая между строк вашего исходного вопроса, я могу предложить альтернативную строку кода BATCH, которую вы можете использовать. При запуске будут удалены только файлы старше 60 дней. Таким образом, вы можете поместить это в запланированное задание, и при запуске оно удалит лишние файлы, которые вам не нужны, вместо того, чтобы уничтожить весь каталог. Вы можете изменить от 60 до 5 дней или даже 1 день, если хотите. Это не удаляет папки.

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

Используйте PowerShell для удаления отдельного файла или папки. Перед выполнением команды Delete в powershell мы должны убедиться, что вы вошли на сервер или ПК с учетной записью, которая имеет полный доступ к объектам, которые вы хотите удалить.

Remove-Item -Path "C: \ dotnet-helpers \ DummyfiletoDelete.txt"

Приведенная выше команда выполнит и удалит файл «DummyfiletoDelete.txt», который находится внутри папки «C: \ dotnet-helpers».

Remove-Item -Path "C: \ dotnet-helpers *. *" -Recurse

-recurse сверлит вниз и находит намного больше файлов. Этот –recurse параметр позволит PowerShell удалять любые дочерние элементы без запроса разрешения. Кроме того, параметр –force может быть добавлен для удаления скрытых или доступных только для чтения файлов.

Использование команды -Force для принудительного удаления файлов

Remove-Item -Path "C: \ dotnet-helpers *. *" -Force

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