현재 서버에 문제가 있습니다. 여러 웹사이트를 호스팅하는 사용자가 해킹을 당해 그의 PHP 파일 중 일부가 수정되었습니다. 이제 감염된 파일 목록을 얻고 싶고 그가 전체 혼란을 치료했는지 확인하고 싶습니다.
감염된 파일의 공통점은 첫 번째 줄이 매우 길다는 것입니다. 그래서 서버에서 최소 길이가 1000자인 모든 PHP 파일을 찾고 싶습니다.
글쎄, "find"를 사용하여 모든 PHP 파일을 찾을 수 있고 "head -n 1"을 사용하여 첫 번째 줄을 얻고 "wc -m"을 사용하여 문자 수를 계산할 수 있습니다.
그런데 어떻게 결합할 수 있나요?
답변1
find
다음을 사용하여 이 작업을 수행할 수 있습니다 awk
.
find . -type f -name '*.php' -size +1000c -exec awk '
FNR > 1 {nextfile}
length >= 1000 {print FILENAME}' {} +
스크립트 awk
는 각 파일의 첫 번째 줄 다음에 있는 다음 파일로 이동합니다. 현재 줄 길이가 1000자보다 크면 현재 파일의 파일 이름이 인쇄됩니다.
답변2
find
다음을 사용하고 시도해 볼 수 있습니다 grep
.
찾다. -type f -name '*.php' -exec grep '.\{1000\}' {} +