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
  • 각 파일에 대해 shell( sh)이 이 짧은 시간 동안 실행됩니다.스크립트: file -b $0 | grep -q text, $0파일 이름으로 대체됩니다.
  • 이것file프로그램은 각 파일의 콘텐츠 유형을 결정하고 해당 정보를 출력합니다. 이 -b옵션은 각 테스트 파일의 이름이 인쇄되는 것을 방지합니다.
  • grepfile다음을 포함하는 행을 검색하여 프로그램의 출력을 필터링합니다."텍스트". ( file이 명령의 일반적인 출력이 어떻게 나타나는지 직접 확인하십시오 .)
  • 하지만 grep필터링된 텍스트는 출력하지 않습니다.-q(조용히) 선택권을 주세요. 그것이 하는 일은 그것을 바꾸는 것뿐이다.종료 상태("true" - 필터링된 텍스트를 의미) 또는 01("false"를 의미 - 텍스트)"텍스트"file)의 출력 에는 나타나지 않습니다 .
  • 의 true/false 종료 상태는 으로 전달되어 grep전체 " " 테스트의 최종 결과로 사용됩니다.shfind-exec sh -c 'file $0 | grep -q text' {} \;
  • 위 테스트가 반환되는 경우진짜, -print명령이 실행됩니다(즉, 테스트 중인 파일 이름이 인쇄됩니다).

답변2

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

c파일 크기 대신 파일 크기를 사용하고 있습니다 b. b512바이트 블록에 적용됩니다. c실제 바이트의 경우.

답변3

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

find -size 1033c ! -executable

그리고 파일을 받았습니다. 분명히 사람이 읽을 수 있는 부분은 실패할 것입니다.

답변4

게임의 올바른 구문은 다음과 같습니다.

file ./* 

각 파일의 구성 요소가 나열된 반환 메시지를 받게 됩니다. 이는 Bandit 게임에서 달성하고자 하는 목표에 완벽합니다. 이 작업의 실제 변화구는 모든 파일이 -(하이픈)으로 시작한다는 것입니다.

관련 정보