-regex를 사용하여 파일을 검색할 때 find를 사용하여 파일 경로를 지정하는 방법

-regex를 사용하여 파일을 검색할 때 find를 사용하여 파일 경로를 지정하는 방법

find정규식을 사용하여 디렉토리의 특정 파일을 검색하고 싶습니다.

만약 내가한다면

cd dir
find -E . -type f -regex '^\..*[^~]'

정규식과 일치하는 디렉터리의 파일 목록을 얻습니다.

하지만 만약 내가 그렇게 한다면

find -E ~/dir -type f -regex '^\..*[^~]'

find -E /home/adam/dir -type f -regex '^\..*[^~]'

나는 어떤 결과도 얻지 못한다. find정규식을 사용할 때 검색할 디렉터리를 어떻게 지정합니까?

find이것은 Mac에서와 마찬가지로 BSD입니다 .

답변1

인수는 -regex발견된 전체 경로와 일치해야 합니다. 유사한 명령은 find .유사한 경로를 찾고 ./dir/subdir/somefile, 유사한 명령은 find ~/dir유사한 경로를 찾습니다 /home/adam/dir/subdir/somefile. 따라서 정규식은 /home/adam시작 부분과 일치해야 합니다.

이 명령은 find -E . -type f -regex '^\..*[^~]'개행 문자를 포함하지 않고 로 시작하지 않는 이름을 찾습니다 ~. .경로가 .로 시작하므로 .로 시작하는 이름은 항상 일치합니다 ./.

도트 파일을 찾고 있다면 디렉터리 접두어를 허용해야 합니다. 다음 명령은 이름이 다음으로 끝나지 않는 도트 파일을 표시합니다 ~.

find -E /whatever -regex '(\n|.)*/\.[^/]*[^~]'

하지만 이를 다음과 같이 표현하면 더 간단합니다 -name.

find /whatever -name '.*[!~]'

관련 정보