Попробуйте auditctl, это поможет. Включение приведенного ниже правила может привести к затоплению вашей системы, поэтому используйте только отладку формы.
auditctl -a exit,always -S execve
Например:
echo '"c:\windows\system32\rundll32.exe"' | rev | cut -d'\' -f1 | rev | sed 's,"$,,'
Использование awk (при условии, что в файле нет других строк):
awk -F'\' '{gsub(/"/, ""); print $NF}' file.txt
awk будет использовать \
в качестве разделителя полей, gsub ()удалит двойные кавычки, а затем напечатает последнее поле (имя файла ).
Если этот файл содержит не только файлы.exe, и вы хотите видеть только файлы.exe, вы можете использовать:
awk -F'\' '/exe"$/{gsub(/"/, ""); print $NF}' file.txt
Вы можете жадно удалить все до последнего обратного слэша и оставить то, что идет после него, вплоть до символа кавычки:
sed 's/.*\\\(.*\)"/\1/g'
Использованиеgrep
:
$ echo '"c:\windows\system32\rundll32.exe"' | grep -Eo '[^\\]+\.exe'
rundll32.exe
Это соответствует и печатает еще один -или -символ, который не является обратной косой чертой [^\\]+
, за которой сразу следует \.exe
.