반응형
파일 찾기에서 정규식을 사용하는 방법
날짜가 지정된 모든 파일과 3 일 이상 전에 모든 파일을 찾으려고했습니다.
find /home/test -name 'test.log.\d{4}-d{2}-d{2}.zip' -mtime 3
아무것도 나열하지 않습니다. 무엇이 문제입니까?
find /home/test -regextype posix-extended -regex '^.*test\.log\.[0-9]{4}-[0-9]{2}-[0-9]{2}\.zip' -mtime +3
-name
사용하는 구형 와일드 카드 일명 표현. 당신이 원하는 것은-regex
- 원하는대로 간격을 사용하려면 플래그 를 통해 확장 정규식
find
을 사용하도록 지시 해야합니다.-regextype posix-extended
- 정규식에서 마침표는 단일 문자 의 특별한 의미를 갖기 때문에 마침표를 이스케이프해야합니다 . 당신이 원하는 것은
\.
- 전용 해당 파일을 일치 시키려면 큰 3 일 오래된, 당신은 당신의 수를 접두사 필요가
+
같이-mtime +3
.
개념의 증거
$ find . -regextype posix-extended -regex '^.*test\.log\.[0-9]{4}-[0-9]{2}-[0-9]{2}\.zip'
./test.log.1234-12-12.zip
-name이 아닌 -regex를 사용하고, regex는 find가 인쇄 할 내용과 일치한다는 점에 유의하십시오 (예 : "test.log"가 아닌 "/home/test/test.log").
시작 :
find . -name '*.log.*.zip' -a -mtime +1
정규식이 필요하지 않을 수도 있습니다.
find . -name '*.log.*-*-*.zip' -a -mtime +1
1, 2, 3 ...과 일치 하려면 +1 을 원할 것입니다 .
사용 -regex
:
man 페이지에서 :
-regex pattern
File name matches regular expression pattern. This is a match on the whole path, not a search. For example, to match a file named './fubar3', you can use the
regular expression '.*bar.' or '.*b.*3', but not 'b.*r3'.
또한, 나는 믿지 않는다 find
지원과 같은 확장 정규식 \d
. 을 사용해야 [0-9]
합니다.
find . -regex '.*test\.log\.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\.zip'
디렉토리 및 파일 검색을위한 정규식에 대한 약간의 정교함
책과 같은 이름의 directroy 찾기
find . -name "*book*" -type d
책 단어와 같은 이름을 가진 파일 찾기
find . -name "*book*" -type f
참고 URL : https://stackoverflow.com/questions/5249779/how-to-use-regex-in-file-find
반응형
'IT Share you' 카테고리의 다른 글
JavaScript에서 문자열을 수학 표현식으로 평가 (0) | 2020.12.03 |
---|---|
Eclipse에서 LogCat 실행이 중지되면 다시 시작해야 함 (0) | 2020.12.03 |
Python으로 ASCII 테이블을 어떻게 예쁘게 인쇄 할 수 있습니까? (0) | 2020.12.03 |
setCurrentItem (0)을 호출 할 때 onPageSelected가 트리거되지 않습니다. (0) | 2020.12.03 |
PHP를 사용한 Python SimpleHTTPServer (0) | 2020.12.03 |