xy_*로 시작하고 오늘 생성/편집된 파일 이름을 검색하는 방법은 무엇입니까?

xy_*로 시작하고 오늘 생성/편집된 파일 이름을 검색하는 방법은 무엇입니까?

안녕하세요, 현재 xy_Number로 시작하고 오늘(지난 24시간 아님) 생성/편집된 로그 파일을 검색하려고 합니다.

나는 시도했다:

find /home/USER/logfilesError/ -maxdepth 1 -type f -daystart -mtime -1 print0 | xargs -0 grep - l xy_*

산출:

find: paths must precede expression: print0

다음을 결합해야 합니다.

find -maxdepth 1 -type f -daystart -mtime -1

그리고

ls | grep -E "xy_"

내가 달성하고 싶은 것은 다음과 같습니다

오늘의 특정 위치에서 로그 파일을 검색한 다음 해당 파일과 ERROR로 시작하는 출력 행을 추가로 검색합니다. (다른 라인 INFO 및 DEBUG)


검색이 제대로 작동하고 있습니다. 검색 후 grep을 사용하여 파일을 추가로 확인하여 ERROR가 포함된 파일을 찾고 싶습니다.

grep -rl "ERROR" /home/USER/logfilesError/

이를 스크립트로 결합하려면 어떻게 해야 합니까? 만약에? 누군가 나를 도와줄 수 있나요?

답변1

grep을 사용하여 find가 작업을 수행할 수 있는 이유:

find /home/USER/logfilesError/ -maxdepth 1 -type f -name "xy_*" -daystart -mtime -1

답변2

그 소리에서 당신은 다음을 찾고 있습니다 -name:

find /path -maxdepth 1 -type f -name 'xy_*' -daystart -mtime -1 -exec grep -H ERROR {} +

에서 man find:

-name pattern

파일 이름의 기본(선행 디렉터리가 제거된 경로)은 셸 패턴과 일치합니다. 메타 문자("*", "?" 및 "[]")는 기본 이름 시작 부분의 "."와 일치합니다(이는 findutils-4.2.2의 변경 사항입니다. 아래 표준 적합성 섹션 참조). 디렉터리와 그 아래의 파일을 무시하려면 -prune을 사용하세요. -path 설명의 예를 참조하세요. Bash를 포함한 일부 쉘은 쉘 모드에서 중괄호에 특별한 의미를 부여하지만 중괄호는 특별한 것으로 간주되지 않습니다. 파일 이름 일치는 fnmatch(3) 라이브러리 함수를 사용하여 수행됩니다. 쉘에 의해 확장되는 것을 방지하기 위해 패턴을 인용하는 것을 잊지 마십시오.

관련 정보