UNIX 명령 - 찾기

UNIX 명령 - 찾기

UNIX 명령을 배우려고 이 게임을 하고 있는데 지금은 정말 꼼짝 못 하고 있습니다. 나는 ssh를 통해 서버에 있고 디렉토리는 임의의 파일과 폴더로 가득 차 있으며 다음 레벨의 비밀번호는 파일 중 하나에 있습니다. 파일에 다음과 같은 속성이 있다고 들었습니다.

  • 사람이 읽을 수 있는
  • 1033바이트
  • 실행 불가능

나는 명령을 사용해야 한다고 생각 find하고 시도했지만 find ! -executable많은 파일이 반환되었습니다. 매뉴얼이나 온라인에서 사람이 읽을 수 있는 유일한 도움말은 사람이 읽을 수 있는 형식으로 파일 크기를 인쇄하는 것입니다. 그래서 나는 거기에서 약간 길을 잃었습니까?

또한 시도했지만 find ~ -size 1033b아무것도 반환되지 않았습니다. 그러나 시도했을 때 find ~ -size -1033b디렉토리의 모든 파일이 반환되었습니다.

답변1

사람이 읽을 수 있는 파일 이름을 필터링하려면 [:print:](인쇄 가능)캐릭터 클래스이름. 이러한 클래스에 대한 자세한 내용은 의 매뉴얼에서 찾을 수 있습니다 grep.

find . -type f -size 1033c -name "[[:print:]]*" ! -executable

다시 생각해 보면 "사람이 읽을 수 있는" 요구 사항은 파일 이름 대신 파일 내용을 참조할 수도 있습니다. 즉, 다음을 검색하게 됩니다.텍스트파일. 그건 좀 더 까다롭습니다. @D_Bye가 주석에서 제안한 대로 file명령을 사용하여 파일 콘텐츠 유형을 결정해야 합니다. 그러나 file파이프 뒤에서 실행하는 것은 파일 이름을 표시하는 작업을 복잡하게 만들기 때문에 좋은 생각이 아닙니다 . 제가 제안하는 것은 다음과 같습니다.

find . -type f -size 1033c ! -executable -exec sh -c 'file -b $0 | grep -q text' {} \; -print

-part의 작동 방식은 간략하게 다음과 같습니다 file.

  • 그만큼-exec조건자는 이전 조건(유형, 크기, 실행 불가능)을 모두 만족하는 sh -c 'file -b $0 | grep -q text' FILENAME각각에 대해 실행됩니다 .FILENAME
  • 각 파일에 대해 쉘( sh)은 다음과 같이 짧게 실행됩니다.스크립트: , 파일 이름으로 file -b $0 | grep -q text바꿉니다 .$0
  • 그만큼file프로그램은 각 파일의 콘텐츠 유형을 결정하고 이 정보를 출력합니다. 이 -b옵션은 테스트된 각 파일의 이름을 인쇄하는 것을 방지합니다.
  • grep프로그램 에서 나오는 출력을 필터링하고 file다음을 포함하는 행을 검색합니다."텍스트". ( file명령의 일반적인 출력이 어떻게 보이는지 직접 확인하십시오 .)
  • 하지만 grep필터링된 텍스트는 출력하지 않습니다.-q(조용함) 옵션이 제공됩니다. 그것이 하는 일은 단지 그것을 바꾸는 것입니다.종료 상태0("true" - 필터링된 텍스트를 나타냄) 또는 1("오류"를 의미 - 텍스트 )"텍스트") 의 출력에는 나타나지 않았습니다 file.
  • 에서 나오는 참/거짓 종료 상태는 으로 grep전달되어 전체 " " 테스트의 최종 결과로 작용합니다.shfind-exec sh -c 'file $0 | grep -q text' {} \;
  • 위 테스트가 반환된 경우진실, -print명령이 실행됩니다(즉, 테스트된 파일의 이름이 인쇄됩니다).

답변2

find . -type f -readable -size 1033c ! -executable

파일 크기 c대신에 사용했습니다 . 512바이트 블록용입니다. 실제 바이트용입니다.bbc

답변3

내가 쓴 것은 다음과 같습니다.

find -size 1033c ! -executable

그리고 파일을 받았습니다. 분명히 인간이 읽을 수 있는 부분은 당신을 쫓아내는 것이었습니다.

답변4

나는 게임에 대해 생각하지만 올바른 구문은 다음과 같습니다.

file ./* 

각 파일이 무엇으로 구성되어 있는지 나열하는 결과를 받게 됩니다. Bandit 게임에서 달성하려는 작업에 정말 효과적이었습니다. 이 작업의 실제 변화구는 각 파일이 -(하이픈)으로 시작한다는 것입니다.

관련 정보