
특정 파일 형식을 검색하는 방법을 알고 싶습니다. SSH 서버에 들어가서 파일을 검색하려고 하는데 .jpg
서버 소유자(선생님)가 모든 확장자를 제거했습니다.
시도해 보았고 grep -lr "JFIF"
동일한 파일 이름을 가진 많은 디렉터리를 찾았으므로 명령으로 찾은 임의의 디렉터리로 뛰어들어 명령 grep
을 사용하려고 시도했지만 cat
터미널에서 전체 바이너리를 표시할 수 없었습니다.
그리고 strings
ssh 서버에서는 명령어가 차단되어 있는데 선생님께서 jpg 파일을 찾아야 하고 이 파일에 일련번호(SN)가 포함되어 있다고 하셨는데 어디서 찾을 수 있는지 모르겠어요.
여러분이 SSH 카디널스를 원하신다면 기꺼이 나눠드릴 것입니다. 어쨌든 선생님은 명령을 사용하여 file
그렇게 할 수 있다고 말씀하셨지만 저는 어떻게 해야 할지 모르겠습니다.
그나저나: 그가 그러더군요 (SN)
답변1
여러분이 직접 HW를 해결할 수 있도록 몇 가지 힌트를 드리고자 합니다.
다음 단계를 따르세요.
file
를 실행하여 매뉴얼을 읽어보세요man file
.- 그런 다음 시험해보고
file somefile
무슨 일이 일어나는지 확인하십시오. file
다른 파일 형식으로 실행해 보세요.- 이제 일부 파일이 JPEG 이미지인지 확인하는 방법을 이해할 수 있을 것입니다.
- 이제 설명서를 읽어보세요
find
(또는 Google을 사용하여 일부 디렉터리와 모든 하위 디렉터리에 있는 모든 파일을 찾는 방법을 알아보세요). - 이제 이전에 사용한 명령 과 연결하기 위해
-exec
옵션을 사용하는 방법을 알아보십시오.find
file
- 이제 필요한 디렉토리에 있는 모든 파일의 파일 형식을 찾아 나열할 수 있습니다.
- 이제 JPEG 파일만 필터링하는 방법을 알아보려면 파이프
|
및 명령에 대해 읽어보세요.grep
답변2
우선 내 질문에 직접 대답하지 않고 많은 새로운 것을 이해하는 데 도움을 준 @incBrain과 @Serg에게 감사를 표하고 싶습니다 :).
내 작업은 확장자가 제거된 특정 .jpg
파일을 찾는 것이었습니다. 제가 가장 먼저 생각한 것은.jpg
매직 바이트이는 JFIF
@incBrain 지침을 사용하여 이 명령을 작성할 수 있었습니다.
find / -exec file {} \; | grep "JFIF"
해당 줄은 명령을 명령 find
에 연결한 다음 & 명령 의 출력을 모두 가져오고 바이너리 aka에 포함된 파일만 표시하는 명령 의 파이프 기호를 통해 입력으로 전송합니다 .file
-exec
find
file
|
grep
JFIF
.jpg files
내 문제는 실제로 특정 일련 번호를 찾는 것이었습니다. 처음에는 일련 번호가 파일의 바이너리에 포함되어 있었지만 그게 틀렸다고 생각했지만 미친 생각이 떠올랐습니다.
오! 사진이 어떻게 생겼는지 볼 수 없나요? 일련 번호를 찾을 수 없다면 사진을 얻는 것이 좋을 것입니다.
그리고 SSH에서 내 컴퓨터로 파일을 전송하는 좋은 방법을 찾기 위해 인터넷을 검색했는데 제대로 된 이 코드 블록을 발견했습니다!
scp [email protected]:/home/example/file.txt /Local_Directory
이 답변이 미래에 누군가에게 도움이 되기를 바랍니다 :).
답변3
한 가지 가능한 해결책은 다음과 같습니다. find
일반 파일( -type f
)을 재귀적으로 나열하고 file
각 파일에 대해 명령을 수행하는 사용입니다. grep
파일 형식을 필터링 하려면 출력을 리디렉션하세요 .
하지만 여기서는 그보다 더 재미있는 일을 하고 싶습니다. 더 어색하지만 더 재미있습니다.
$ find . -maxdepth 1 -type f -printf "%f\t" -exec hexdump -n8 {} \; | awk '/d8ff e0ff 1000 464a/{print $1}'
모든 파일에 파일 형식을 지정하는 첫 8바이트가 있다는 것을 알 수도 있고 모를 수도 있습니다. 따라서 를 사용하여 find
모든 일반 파일을 검색하고 이름을 인쇄한 다음 hexdump를 실행하여 처음 8바이트를 추출하고 awk
처음 8바이트가 있는 파일 이름만 필터링합니다.
여기에 작은 증거가 있습니다:
$ hexdump -n 10 1450763029649.jpg
0000000 d8ff e0ff 1000 464a 4649
000000a
$ hexdump -C -n 10 1450763029649.jpg
00000000 ff d8 ff e0 00 10 4a 46 49 46 |......JFIF|
0000000a
답변4
file * | grep -i "jpeg"
그러면 디렉터리의 모든 파일을 검색하여 해당 파일 형식을 반환합니다. 파이프를 통해 |
이러한 결과는 grep을 통해 검색되어 "jpeg" 파일 유형 또는 기본적으로 .jpg 파일을 찾습니다.