Как рекурсивно удалить все файлы.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