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 '.*[!~]'