grep 이후 파일 이름과 파일 생성 날짜를 반환합니다.

grep 이후 파일 이름과 파일 생성 날짜를 반환합니다.

콘텐츠와 파일 이름을 기반으로 특정 파일을 검색하려면 다음 방법을 사용합니다.

find /labels/ -type f -iname '*.*' -exec grep -l 'MB2306' {} +

이제 반환된 파일의 생성 날짜도 알아야 합니다. 이를 달성하려면 여기서 무엇을 변경해야 합니까?

Red Hat Enterprise 8.8의 4.6.0에서 실행 중입니다.

답변1

-files0-fromGNU find및 최신 버전의 GNU(4.9 이상) grep또는 호환 버전을 사용하세요.

find /labels/ -type f -name '*.*' -exec grep -Zl MB2306 {} + |
  find -files0-from - -prune -printf '%TFT%TT%Tz %p\n'

다른 find구현이나 GNU 이전 버전의 경우 find, 그리고 여전히 GNU xargs와 GNU를 stat사용할 수 있는 경우:

find /labels/ -type f -name '*.*' -exec grep -Zl MB2306 {} + |
  xargs -r0 stat -c '%y %n' --

%T( %yfor stat)는 마지막 수정 시간으로, 생성 시간이라고도 볼 수 있습니다.콘텐츠이 파일들. 파일의 생성 시간을 %B( %wGNU의 경우)로 바꿀 수 있지만 이는 모든 시스템과 파일 시스템에서 사용할 수 있는 것은 아니며 정확히 원하는 것이 무엇인지에 따라 일반적으로 유용한 측정 기준이 아닙니다.stat

-name '*.*'( -iname패턴에 문자가 없기 때문에 별로 의미가 없음) 보고서 이름은 완전히 텍스트로 구성되고 하나 이상의 가 포함되어 있다는 점 에 유의 하세요 .. .bashrc파일 이름이 텍스트로 구성되어 있는지 여부에 관계없이 확장자를 가진 파일을 일치시키려면 LC_ALL=C find ... -name '?*.*'¹가 필요합니다. 이름에 관계없이 파일을 원하면 다음을 생략하면 됩니다 -name pattern.

find대부분의 기능은 파일 유형별 재귀 및 필터링을 지원하는 zsh 쉘 의 glob에서 사용할 수 있으며 해당 쉘에서 다음을 수행할 수 있도록 stat내장되어 있습니다(1997년부터 GNU 이전 ).stat

zmodload zsh/stat
stat -nLF %FT%T.%N%z +mtime ${(0)"$(
  grep -lZ MB2306 /labels/**/?*.*(ND.))"}

(여전히 GNU grep또는 해당 -Z옵션과 호환된다고 가정하고 여기서는 일반 텍스트 파일 이름으로 제한되지 않습니다.)

%FT%T.%N%z strftime()사양(여기서는 나노초로 확장됨 ) 또는 이에 상응하는 %NGNU 사양은 난독화되지 않은 표준 형식을 제공합니다 . 원하는 대로 조정할 수 있습니다. 참조 형식에 대한 자세한 내용을 확인하세요.find-printf%TFT%TT%Tz2023-06-14T10:23:05.047789132+0100man strftime

GNU stat형식은 사용자 정의할 수 없지만 for 및 for 를 2023-06-14 10:23:05.047789132 +0100사용할 수도 있습니다 .%Y1686734585%.Y1686734585.047789132


¹ 이는 파일 내용과 해석 방법 LC_ALL=C에도 영향을 주지만 grep여기서 고정 문자열을 찾을 때 아무런 차이가 없어야 하며 속도가 빨라질 수도 있습니다.

답변2

find명령은 AND모두 예측되므로(predicates 를 사용하지 않는 한 -o) 추가하고 ls -l --time=creation(OS가 이를 지원해야 하며 Alma 9.1에서 확인했습니다) 일치하는 파일의 생성 시간 목록을 얻을 수 있습니다.

find /labels/ -type f -iname '*.*' -exec grep -q 'MB2306' {} \; -exec ls -l --time=creation {} \;`

파일이 일치하는지 알아야 하기 때문에 grep로 변경했습니다 . 일치하면 실행하고, 일치하지 않으면 실행하지 마세요.-qlsls

관련 정보