이러한 문자열에 대해 여러 파일을 검색하려고 합니다. 이것이 중요하다면 AIX를 사용하십시오.
grep -r "gap" /u/user/.History/
/u/user/.History/server/user:
/u/user/.History/server/user:
파일 이름이 나열되어 있지만 일치하는 항목이 표시되지 않는 이상한 문자가 파일에 포함되지 않는 한 대부분의 경우 작동합니다. 그래서 이렇게 문자열 명령을 추가했습니다. 이 방법 중 어느 것도 작동하지 않습니다. 이 명령은 전혀 출력을 제공하지 않습니다. 일치하는 항목이 있다는 것을 알고 있어도 일치 항목이 없는 것처럼 동작합니다.
strings /u/user/.History | grep gap
strings /u/user/.History/* | grep gap
cat /u/user/* | strings | grep gap
cat /u/user/.History/* | strings | grep gap
cat /u/user/.History/ | strings | grep gap
문자열이 포함된 단일 파일을 grep하면 다음과 같은 출력이 제공됩니다. 여러 파일로 이 작업을 수행하면 작동하지 않습니다.
>strings /u/user/.History/server/user | grep gap
cd gap #▒#1612466141#▒#
gzip -cd gap2021-01-28.log.gz #▒#1612466384#▒#
답변1
나는 귀하의 명령이 실제로 올바른 파일을 찾고 일치하는 줄을 표시한다고 믿습니다 grep -r "gap" /u/user/.History/
. 줄이 터미널에 기록될 때 텍스트를 가리는 인쇄할 수 없는 부분도 있다는 것입니다.
내 제안은 인쇄할 수 없는 부분이 인쇄 가능한 문자로 확장되어 기본 텍스트를 볼 수 있도록 출력을 필터링하는 것입니다.
grep -r "gap" /u/user/.History/ | cat -v
또는
find /u/user/.History/ -type f -exec grep gap {} + | cat -v
일을 할 것입니다. 이것cat -v
명령 "인쇄되지 않는 문자를 보이는 문자로 표시..."
차이점을 보여주기 위해 몇 가지 테스트 파일을 만들었습니다.
$ grep -r gap .
./user1/.History/server/user:
./user2/user:gap
비교:
$ grep -r gap . | cat -v
./user1/.History/server/user:gap^?^?^?
./user2/user:gap
^?^?^는 어디에 있나요? 문자는 세 개의 "삭제" 문자를 나타냅니다. 있는 그대로 인쇄하면 이러한 삭제된 문자는 3자리 "간격" 문자열을 숨깁니다.
또 다른 옵션은 출력을 다음을 통해 파이프하는 것입니다.od
, 아마도 ... | od -c
.
답변2
나는 이를 수행하는 여러 가지 방법을 찾았습니다.
strings /u/user/.History/*/* | grep gap
그리고 find
.
find /u/user -xdev -type f -exec strings {} + | grep gap
find /u/user -xdev -type f -exec strings {} \; | grep gap