IT Share you

파일 찾기에서 정규식을 사용하는 방법

shareyou 2020. 12. 3. 20:50
반응형

파일 찾기에서 정규식을 사용하는 방법


날짜가 지정된 모든 파일과 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
  1. -name사용하는 구형 와일드 카드 일명 표현. 당신이 원하는 것은-regex
  2. 원하는대로 간격을 사용하려면 플래그 를 통해 확장 정규식find 을 사용하도록 지시 해야합니다.-regextype posix-extended
  3. 정규식에서 마침표는 단일 문자 의 특별한 의미를 갖기 때문에 마침표를 이스케이프해야합니다 . 당신이 원하는 것은\.
  4. 전용 해당 파일을 일치 시키려면 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

반응형