특정 날짜에 수정 된 모든 파일 가져 오기


20

php특정 날짜에 특정 디렉토리에서 수정 된 모든 파일 을 찾을 수 있습니까?

나는 사용하고있다

find /var/www/html/dir/ -mtime -28 | grep '\.php' 

지난 28 일 이내에 수정 된 파일을 가져 오려면 다음 날짜에 수정 된 파일 만 필요합니다. 2011-02-08

답변:


22

최신 버전 find(예 : GNU 4.4.0)에서는이 -newermt옵션을 사용할 수 있습니다 . 예를 들어 2011-02-08에서 수정 된 모든 파일을 찾으려면

$ find /var/www/html/dir/ -type f -name "*.php" -newermt 2011-02-08 ! -newermt 2011-02-09

또한 찾기 -name옵션 을 사용하면 PHP 파일을 찾기 위해 grep에 파이프 할 필요가 없습니다 .

더 많은 제안을 보려면이 SO 답변을 살펴보십시오. '찾기'를 사용하여 특정 날짜에 작성된 파일을 검색하는 방법은 무엇입니까?


4

짜증나게도 standard와 직접적인 방법은 없습니다 find. findGNU 시스템 의 최신 버전 (예 : 내장되지 않은 Linux, Cygwin) 및 일부 * BSD에는 파일 날짜와 철자가 지정된 날짜를 비교하는 옵션-newermt있습니다 .

standard를 사용하면 find파일 날짜를 현재 날짜 ( -mtime) 또는 고정 파일과 비교하기 만하면됩니다. 이 경우 현재 날짜는 일반적으로 유용하지 않습니다 ( find대부분의 응용 프로그램에는 달력 날짜가 필요한 반면 명령 을 실행 한 시간부터 계산 됩니다). 따라서 범위를 정의하기 위해 임시 파일을 작성해야합니다.

touch -t 201103070000 start.tmp
touch -t 201103080000 stop.tmp
find . -newer start.tmp \! -newer stop.tmp -print
rm start.tmp stop.tmp

2

당신은이 의 버전, 이미 적절한 명령을 find그건 당신이 날짜를 사용하지 않습니다 :

find /var/www/html/dir/ -mtime 27 | grep '\.php'

위한 일반적 find- N 수단 보다 적은 , N 수단 도 같을 , + N 수단 "이상". Traditional find에는 몇 가지 예외가 있지만 GNU find및 BSD / Mac OS X와 ​​같은 다른 최신 버전 에서는 예외가 수정되었습니다. (Solaris 또는 다른 상업용 Unix 시스템을 사용하는 경우이 점을 명심하십시오.)


1

기능zsh사용하면 특정 날짜에 수정 된 파일 이름 만 인쇄 할 수 있습니다 .age

자동로드 연령
print -rl-* .php (.e : age 2011/02/08 :)

또는 재귀 적으로 검색하려는 경우 :

자동로드 연령
확장 글로브 설정
print -rl-** / *. php (.e : age 2011/02/08 :)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.