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

Я извлек .zip файл сжат на Mac и обнаружил, что сжатие включает в себя все .DS_STORE файлы мета-каталогов (я думаю, раньше использовали для ускорения поиска в центре внимания, но помимо этого?).

Можно ли выполнить однострочную обработку из Windows PowerShell или простого сценария python для очистки этой папки путем рекурсивного удаления этих файлов?

Я получаю ошибку: FIND: Parameter format not correct когда используешь:

find . -name '*.DS_Store' -type f -delete

3 ответа

Решение

В PowerShell сделайте это:

cd MyFolder

Get-ChildItem -recurse -filter .DS_STORE | Remove-Item -WhatIf

Когда вы указываете -WhatIfто PowerShell не будет вносить никаких изменений. Вместо этого он скажет вам, что он сделал бы. Когда вы довольны тем, что он будет делать, вы можете удалить -WhatIf, (При рекурсивном удалении всегда стоит быть осторожным. Вы не хотите удалять неправильные вещи.)

Цель: удалить все вхождения «.DS_Store» и «._.DS_Store» в текущем и всех подкаталогах Windows.

Утилита «поиск» в Windows работает иначе, чем «поиск» в Linux. Я настоятельно рекомендую вам использовать Cygwin (доступно здесь). Cygwin предоставляет и делает утилиты Linux доступными под Windows. Если у вас есть Cygwin, вы можете перейти в выбранный вами базовый каталог:

Пример: Чтобы перейти к c:\projects, вы запустите:

      cd /cygdrive/c/projects

Как только вы окажетесь в выбранной вами папке/каталоге, вы можете выполнить следующие две команды.

      # First let's find all occurrences of both ".DS_Store" and "._.DS_Store" (recursive)     
find . -type f \( -name ".DS_Store" -o -name "._.DS_Store" \) -print0

# After we have ensured that the results are good then let's rerun and pipe it to the rm (remove) command via xargs
find . -type f \( -name ".DS_Store" -o -name "._.DS_Store" \) -print0 | xargs -0 rm

Теперь это должно удалить все вхождения этих двух файлов из каталога Windows (рекурсивно).

Ваше здоровье

Тот find Синтаксис, который вы используете в своем примере, кажется мне более подходящим для установок Mac OS X или Linux/Unix, чем для установки Windows. Вместо этого, возможно, используйте del команда, как это в Windows, как описано здесь:

del /s /q /f /a:h .DS_STORE
Другие вопросы по тегам