macos 12.6.x에서 "find -E -regex"를 실행할 때 이 오류가 발생하는 이유는 무엇입니까?

macos 12.6.x에서 "find -E -regex"를 실행할 때 이 오류가 발생하는 이유는 무엇입니까?

서버의 폴더를 정리하는 스크립트의 일부로 "YYYY_MM_DD"라는 디렉터리를 찾은 다음 해당 디렉터리의 이름을 "newName"으로 변경하는 find regex(Macos 12.6.x)를 작성했습니다.

서버를 설치한 다음 Mac에서 스크립트를 실행할 수도 있습니다. 이것을 Linux 서버로 옮기고 gnu find를 사용하여 실행하는 것이 더 합리적일 수 있다는 것을 알고 있지만 bash 스크립팅을 배우는 중이므로 Mac에서 테스트한 다음 Linux에서 실행하도록 변경해야 합니다.

find 명령을 스크립트에 통합하기 전에 테스트하고 있습니다. 결과가 맞는지 확인하고 싶습니다.

이 find 명령을 실행하면 명령이 작동하는데도 "해당 파일이나 디렉터리가 없습니다"라는 오류가 발생합니다.

인터넷 검색을 해봤지만 명령을 실행할 때 왜 이 오류가 발생하는지 이해하지 못합니다.

find 명령과 결과는 다음과 같습니다.

$ find -E ./ -type d -regex '.*([0-9]+(_[0-9]+)+)$' -execdir mv {} "newName" \;
find: .//folder1/folder2/2021_03_17: No such file or directory

"2021_03_17"이라는 디렉터리를 찾아서 원하는 "newName"으로 이름을 바꿨습니다.

"해당 파일이나 디렉터리가 없습니다"라고 표시되는 이유는 무엇입니까?

답변1

좋은 실행 명령:

find -E ./foo -type d -regex '.*([0-9]+(_[0-9]+)+)$' -depth -execdir mv {} "newName" \;
vagrant@freebsd:~ % tree foo
foo
└── bar
    └── 2023_02_23

3 directories, 0 files
vagrant@freebsd:~ % find -E ./foo -type d -regex '.*([0-9]+(_[0-9]+)+)$' -depth -execdir mv {} "newName" \;
vagrant@freebsd:~ % tree foo
foo
└── bar
    └── newName

3 directories, 0 files

관련 정보