Использование grep для поиска и удаления файлов, заполненных нулями

Я попытался восстановить образ диска с жесткого диска NTFS, который на 50% нечитаем. И я предполагаю, что побочным эффектом этого является то, что многие восстановленные файлы имеют правильное имя файла и тип и занимают тот же размер файла, что и исходный файл, однако вместо того, чтобы содержать какие-либо полезные данные, они просто заполнены 00 00 00 00 и т. д. в HEX-редакторе. Поскольку эти файлы бесполезны, но все равно занимают место на диске, есть ли способ автоматизировать их поиск и удаление?


person TheBladeRoden    schedule 15.07.2018    source источник
comment
Выполните обратный двоичный поиск нулевого байта. Не удаляйте, если что-то найдено в файле. Посмотрите справочные страницы, какие флаги использовать.   -  person Mad Physicist    schedule 15.07.2018
comment
Позвольте @tripleee помочь вам... stackoverflow.com/a/20225032/2836621   -  person Mark Setchell    schedule 15.07.2018
comment
Возможный дубликат Как проверить если файл содержит только нули в оболочке Linux?   -  person tripleee    schedule 23.07.2018
comment
Я просматриваю старые резервные копии, а также вижу файлы размером ~ 50 ГБ в информации о системном томе, в которых нет ничего, кроме нулей при просмотре в шестнадцатеричном редакторе. Их легко удалить!   -  person endolith    schedule 28.02.2019


Ответы (1)


После некоторых исследований я придумал

grep --ignore-case -r -L --null [^0] * | xargs -0 rm
person TheBladeRoden    schedule 23.07.2018
comment
Это удаляет файлы, содержащие только 0x30 байт (код ASCII для символа 0). Некоторые варианты grep могут поддерживать обозначение [^\000] или, если у вас есть Bash, вы можете сказать $'[^\x00]' - person tripleee; 23.07.2018