반응형
찾기를 사용하여 정규식으로 파일 이름을 검색하는 방법
날짜가 지정된 모든 파일과 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
regex not -name을 사용하고 regex가 인쇄할 검색과 일치하는지 확인합니다(예: "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
:
맨 페이지에서:
-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'
디렉터리 및 파일 검색을 위한 정규식에 대한 약간의 정교함
책과 같은 이름의 다이렉트로이 찾기
find . -name "*book*" -type d
북워드와 같은 이름의 파일 찾기
find . -name "*book*" -type f
언급URL : https://stackoverflow.com/questions/5249779/how-to-search-filenames-by-regex-with-find
반응형
'programing' 카테고리의 다른 글
오류 해결 방법 "'운영' 환경에 대한 'secret_key_base' 누락"(레일 4.1) (0) | 2023.06.04 |
---|---|
새 줄을 제거하지 않고 Ruby에서 여러 줄의 긴 문자열 분할 (0) | 2023.06.04 |
postgresql 날짜 시간에 일 수를 추가하는 방법 (0) | 2023.06.04 |
배치 파일을 윈도우즈 서비스로 실행 (0) | 2023.06.04 |
PHP 배열의 값을 지우기 위해 각 루프에 사용하는 효율성 (0) | 2023.06.04 |