Get-Content
Командлет с -Encoding Byte
и -Tail
коммутаторами дает вам то, что вы хотите, чтобы соответствовать против в PowerShell. Предполагая, что это то, где это вам не удается.
Найти последовательность в файлах с помощью HEX Editor
Несколько дней назад я решил дефрагментировать и оптимизировать внешний жесткий диск объемом 2 ТБ с помощью программы Auslogics Defragmenter. Теперь немного фона здесь. Раздел, который я дефрагментировал, был разделом 1,8 ТБ, зашифрованным VeraCrypt, ответвлением от TrueCrypt. После завершения дефрагментации я обнаружил, что несколько файлов были повреждены. Все файлы, в которых я мог обнаружить повреждение, были сжатыми файлами, сжатыми с использованием сжатия по умолчанию в Windows 10. Я открыл файлы в WinHex и увидел любопытную вещь: конец всех этих поврежденных файлов был блок последовательности «DF DF DF».Вот скриншот проблемы.Обратите внимание, что, хотя на рисунке показано, что это дуговой файл, он все еще был сжат с помощью сжатия Windows. Любопытно, что, несмотря на то, что файлы содержали эти фрагменты DF, двоичный поиск смонтированного раздела не дал такой последовательности.
Теперь я хочу создать командный файл, который будет:
- Создать список сжатых файлов на диске
- Проверьте последовательность DF в конце двоичного содержимого каждого файла
- Составьте список всех затронутых файлов
Я пытался решить эту проблему с помощью скрипта Powershell, но безуспешно. Я думаю, что подойти к проблеме на платформе Linux было бы намного проще, но я понятия не имею, как это сделать. Любая помощь или предложение будет принята с благодарностью.
Дополнительное примечание: многие говорят, что бинарный поиск смонтированного раздела был неудачным из-за того, что раздел зашифрован. Это неверно. Я установил раздел перед поиском. Следовательно, поиск проводился не по RAW-данным жесткого диска, а по данным незашифрованного раздела.
Дополнительные сведения: ОС: Windows 10 Professional X64 / Ubuntu 14.04 x64 Файловая система: NTFS
2 ответа на вопрос
Get-ChildItem -recurse -file -Attributes Compressed -path $Path | Foreach-Object -Process { if ((Get-Content -Tail 1 -encoding String -literalpath $_.fullname).endswith("ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß")) { Write-Output "$($_.Name) `t $($_.FullName) `t $($_.length)"} }
Простой один лайнер. Основано на том, что сказал kRush. Замените $ Path на правильный путь.
Похожие вопросы
-
12
Почему папка / winsxs становится такой большой и ее можно уменьшить?
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
2
Повышенные привилегии для запуска приложений в Windows?
-
-
14
PDF Viewer в Windows
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
7
Какие службы Windows можно безопасно отключить?
-
8
Firefox PDF плагин для просмотра PDF в браузере на Windows
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
1
Windows теряет макет экрана
-
1
Есть ли способ предотвратить установку / обновление, чтобы засорять мой жесткий диск загадочными пап...