서버의 폴더를 정리하는 스크립트의 일부로 "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