리눅스 파일중 특정일에 수정된 파일목록 뽑기

kmsjlove의 이미지

안녕하세요 질문이 있습니다.

리눅스 전체 파일중에서 특정일에 변경된 파일만 뽑아보려고합니다.
그래서 다음 명령어를 작성해봤는데요..

find ./ -name "*" -exec stat {} \; | grep "03-07"

이렇게 하면....

Modify: 2012-03-07 xx:xx:30.000000000 +0900
Change: 2012-03-07 xx:xx:30.000000000 +0900
Modify: 2012-03-07 xx:xx:30.000000000 +0900
Change: 2012-03-07 xx:xx:30.000000000 +0900

이렇게만 나오고 파일명을 알아 볼 수가 없네요...

그래서

find ./ -name "*" -exec stat {} \; | grep -l "03-07"

했더니

이런 오류 메시지만..

find: stat terminated by signal 13
find: stat terminated by signal 13
find: stat terminated by signal 13

무슨 방법이 없을까여...

planetarium의 이미지

-exec stat 하는 대신 -printf 의 format을 잘 작성해 보세요.
혹은 -exec ls -l 해도 될것 같은데요?

ymir의 이미지

find 에 -newer 옵션이 있다면, 다음처럼 해봐도 될 것 같네요.

$ touch from -t 201203120000
$ touch to -t 201203130000
$ find . -type f -newer from -and ! -newer to -ls

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

kmsjlove의 이미지

stat으로 그파일의 상태를 봐야 하거든요. 즉, 생성, 수정, 접근날짜를 봐야 합니다.
그날짜에서 특정일이 존재할 때 그파일명을 뽑아보고싶었던 거거든요.

ls 경우 하나의 날짜만 나오고요.

ymir의 이미지

find 의 man page 를 잘 째려보면, find 의 옵션으로도 모두 커버가 될 것 같지만..
stat 의 결과가 필요하다면, 다음처럼 해도 될 것 같네요.
done 바로 앞의 stat $file 부분은 적당히 바꾸세요.

$ find . -type f | while read -r file ; do stat $file | grep '2012-02-12' > /dev/null 2>&1 && stat $file; done
  File: `./a.c'
  Size: 601             Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d      Inode: 89653565    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    ymir)   Gid: ( 1000/    ymir)
Access: 2012-03-21 13:47:25.916244068 +0900
Modify: 2012-02-12 11:47:45.590027789 +0900
Change: 2012-02-12 11:47:45.662027787 +0900

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

cmkmh의 이미지

사용하신 명령어 뒤에 추가로 -B 6 하시면 됩니다..

find ./ -name "*" -exec stat {} \; | grep "03-07" -B 6

doodoo의 이미지

.

doodoo의 이미지

.

doodoo의 이미지

.

doodoo의 이미지

.

doodoo의 이미지

죄송....연결이 초기화 되었다고 나오길레 버튼을 몇번 더 눌렀더니...ㅠㅠ

find ./ -name "*" -exec stat {} \;  | sed -n  '/File:/h;/Modify:/{/2012-03-07/{g;s/^.*File:.*`//;s/.$//;p}}'