2012-05-23 2 views
2

Javascript에서 작동하는 이음새는 있지만 Linux find 명령에는 작동하지 않습니다. 목적은 특정 디렉토리를 제외하고 지난 90 일 동안 업데이트 된 파일 목록을 수집하는 것입니다 (예를 들어, /data/safe/23/test 디렉토리를 포함한다고 가정하고 있지만 /data/safe/23/skip1이 아님).정규식 오류

find /data/safe -regextype posix-extended -regex '^/data/safe/\d{1,4}/(?:(?!skip1|skip2).*)' -mtime -90 

그리고 마지막으로이되는 오류는 다음과 같습니다; 다음은 정규식 여기

^/data/safe/\d{1,4}/(?:(?!skip1|skip2).*) 

그리고는 find 명령입니다 (그래도 문제가있을 수 있습니다 내가 POSIX의 확장 된 사용하고주의) 생성 :

find: Invalid preceding regular expression 

어떤 도움을 주시면 감사하겠습니다!

답변

1

"posix-extended는"? : "및"?! "를 지원하지 않는다고 생각합니다. ... 당신이 * 잘못하고 있어요하는 사람입니다 * 제가 생각

find /data/safe -regextype posix-extended -regex '^/data/safe/[0-9]{1,4}/.*' ! -regex '^/data/safe/[0-9]{1,4}/(skip1|skip2).*' -mtime -90 
+0

하지만, 명령 같으면를 :

어쨌든, 발견과 함께, 같은 것을 사용하는 것이 더 쉽습니다 어떤 이유로 든 실행되지 않습니다 (마치 추가 입력을 기다리고있는 것처럼). 따라서 -regex 표현식 중 하나를 제거하고 실행했지만 원하는 파일을 제외하지 않았습니다./data/safe -regextype posix-extended를 찾아라! -regex '^/data/safe/\ d {1,4}/(skip1 | skip2). *'-mtime -90 – user1413300

+0

@ user1413300 실제로 posix-extended는 "\ d"도 지원하지 않습니다. 그 부분을 "[0-9]"로 대체하십시오 –

+0

그것은 작동합니다! 고맙습니다. – user1413300

1

잘못하고 있습니다. 중괄호를 별표로 대체해야합니다. 또한 타르 또는 터치 명령을 통해 모든 것을 연결해야합니다.

+0

나는 당신의 솔루션을 시도 –