Как удалить файлы, в имени которых есть «-copy», используя подстановочные знаки?

Как удалить файлы, в имени которых есть «-copy», используя подстановочные знаки?

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

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

Если посмотреть, что будет удалено при использовании *- copy.*Powershell или cmd.exe, то, похоже, будет удален созданный мной файл (copy.bat), а я хочу его сохранить.

Как использовать подстановочные знаки, чтобы удалить все, что находится - copyв конце имени файла, но защитить файлы, такие как copy.bat?

решение1

В данный момент происходит то, что ваш *- copy.*файл анализируется как два аргумента, разделенных пробелом: *-и copy.*. Как только вы это увидите, будет легко понять, что второй из них будет соответствовать вашему copy.batфайлу.

Исправление заключается в том, чтобы заключить инвариантную часть в двойные кавычки (в частности, убедившись, что пробел находится внутри двойных кавычек) *"- copy".*:

DIR *"- copy".*

Get-ChildItem *"- copy".*

Поскольку это Windows, вы можете обойтись без кавычек *, поскольку они анализируются командой, а не инструментом Powershell/CMD:

DIR "*- copy.*"

Get-ChildItem "*- copy.*"

Кстати, если вы собираетесь использовать систему на базе UNIX/Linux (включая Mac), не привыкайте заключать в кавычки подстановочные знаки и ожидать, что они будут работать как шаблон, потому что этого не произойдет: они будут интерпретированы как буквальная звездочка. Мое первое предложение будет работать везде. Второе предложение касается только Windows.

решение2

Файл .batне обязательно должен находиться в той же папке, что и удаляемые файлы. Вы можете запустить его из другой папки, запустив \path\copy.bat.

Если затронуты и другие файлы, помимо copy.bat, вам необходимо скопировать их в другое место перед запуском copy.bat.

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

решение3

Ознакомьтесь с полезным бесплатным инструментом — утилитой массового переименования.https://www.bulkrenameutility.co.uk

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

Связанный контент