Intereting Posts
Использовать glob оболочки *, но исключить один файл и не совпадать с каталогами? Какова была первоначальная (-ые) причина (-ы) добавления «стандартной ошибки», которая отделена от «стандартного вывода»? IPTABLES для блокировки всех исходящих подключений, кроме выбранных сетей Как найти все ссылки в каталоге Допускаются двойные утверждения «if» в сценариях оболочки Слияние содержимого страниц PDF из командной строки без pdftk Есть ли у традиционных vi (not vim) поддержка больших файлов? как гарантировать, что программа всегда работает, но без доступа root? Простой пример wget Scientific Linux псевдоним? не работает в zsh Какой текст будет выводиться smartctl, когда диск не является работоспособным Двойная загрузка PCBSD – Windows 7 Как я могу проверить RAM на повреждение данных в системе на базе ARM? vsftpd с уведомлением по электронной почте Каков вход для входа в систему openSUSE по умолчанию?

Удалите рекурсивно двойное расширение, добавленное «глупым» Crypt0L0cker ransomware

Я пытаюсь восстановить некоторый файл из архива Windows, на который ссылается «глупый» Crypt0L0cker ransomware. Фактически, после быстрой проверки перемещения файлов в мою собственную систему кажется, что вредоносное ПО просто добавило второе -случайное расширение к файлам (да, я знаю, что «расширение» ничего не значит). Простое переименование файлов вручную.

«Список для 2016.doc.irolox» -> вручную переименовать в -> «Список для 2016.doc»

Я хотел бы получить несколько советов для запуска этого рабочего процесса:

  • цикл рекурсивно во всем подкаталоге данной папки
  • файлы содержат пробелы в имени (но они не содержат точек в реальном имени)
  • некоторые файлы, похоже, не затронуты. Правило: не учитывайте их, если у них просто есть одно расширение (так что если обнаружено 2 точки -> файл)
  • переименовать файлы, удалив последнее «расширение».

Любой отзыв для достижения этого результата?

Сначала перейдите в архив папок, затем запустите это:

find | awk -F'.' '{if ($3 != "" && $4 != "" ){system("mv "$0" ./"$2"."$3)}}' 

это будет искать каждый файл в папке и в подпапках, и если он обнаружит, что файл имеет расширение буксировки, он переименует его только с первым расширением

например, папка перед командой:

 . ./lolo.doc ./soso ./soso/jojo.doc.koko.momo ./kokooiko.doc.soso ./jojo.doc.koko 

папка после comamnd:

 . ./lolo.doc ./kokooiko.doc ./jojo.doc ./soso ./soso/jojo.doc 

Вы можете использовать подстановку переменных, например:

 MYVAR="List for 2016.doc.irolox" echo ${MYVAR%.*} 

Вышеупомянутое удаляет кратчайшее совпадение .* Из базы данных значения переменной.

Таким образом вы можете переименовать файл, используя:

 mv "${MYVAR}" "${MYVAR%.*}" 

Решение

Создайте скрипт, который примет произвольное количество аргументов и переименует файлы, удаляющие произвольные расширения. Например,

 cat > /tmp/rename_script.sh <<'EOF' #!/bin/bash while [ $# -gt 0 ]; do mv "$1" "${1%.*}" #alternatively to strip multiple extensions #mv "$1" "${1%.doc.*}.doc" shift done EOF #enable execute perms chmod 755 /tmp/rename_script.sh 

Следующая команда find передаст один или несколько поврежденных файлов в качестве аргументов rename_script.sh ( -execdir выполнит rename_script.sh из рабочего каталога поврежденных файлов). Ниже приведен пример.

 find /path/to/affected/dir -type f -name '*.doc.*' -execdir /tmp/rename_script.sh {} + 

ПРИМЕЧАНИЕ. Я рекомендую вам работать с небольшим размером выборки файлов для первоначальной проверки. Создайте резервную копию старых файлов «ransomware» перед выполнением этого решения во всех файлах.

Протестировано с помощью find (GNU findutils) 4.4.2 на Debian 8 / Jessie.

Дополнительное чтение

  • man bash и найдите Special Parameters , Parameter Expansion и Compound Commands .
  • man find и найти вариант -execdir .