뒤로 및 재귀적으로 grep하려면 어떻게 해야 합니까? 다음과 같은 폴더가 있다고 가정해 보겠습니다.
20170808
20170809
20170810
grep을 수행하면 grep -ri 'string'
각 폴더를 알파벳 순서로 가져오고 "문자열"을 검색합니다. 마지막 폴더에서 첫 번째 폴더까지 역방향으로 검색하려면 어떻게 해야 합니까?
답변1
순서는 grep -r
일반적으로 임의적이며(반드시 알파벳순일 필요는 없음), 일반적으로 디렉터리에서 파일이 정렬되는 방식과 grep
디렉터리 순회를 최적화하기 위해 구현에 따라 재정렬할 수 있는 방법에 따라 결정됩니다.
여기에서는 GNU grep
2.25를 사용하여:
$ grep -r . .
./4/c:c
./1/b:b
./2/a:a
./10/d:d
특정 순서를 원한다면 포기하고 -r
원하는 순서대로 파일 목록을 파라미터로 제공해야 합니다.
예를 들어, 귀하의 경우 다음을 사용하십시오 zsh
.
$ grep -H . ./**/*(D.On)
./4/c:c
./2/a:a
./1/b:b
./10/d:d
여기서는 On
역순을 사용하세요이름으로. n
숫자 정렬을 위한 한정자를 추가할 수 있습니다 .
$ grep -H . ./**/*(D.nOn)
./10/d:d
./4/c:c
./2/a:a
./1/b:b
( -H
또 다른 GNU grep
확장으로, 파일이 하나만 있는 경우에도 파일 이름이 항상 인쇄되도록 보장합니다. 다른 grep
구현을 사용하면 추가 빈 파일을 인수로 추가할 수 있습니다. 예를 들어 최소한 두 개의 파일 이름이 전달되도록 /dev/null
보장합니다 grep
.
이것도 매우 유용합니다zgrep
회전시간순으로 정렬된 로그 파일(예: access.log.10.gz
... access.log.2.gz
, access.log.1
, access.log
):
zgrep something access.log*(nOn)
(누를 수도 있지만마지막 수정zgrep something access.log*(Om)
신뢰할 수 있는 경우 ).