![find 명령과 함께 사용하기 위해 여러 디렉토리 경로로 사전 정의된 변수를 설정하는 방법](https://linux55.com/image/80953/find%20%EB%AA%85%EB%A0%B9%EA%B3%BC%20%ED%95%A8%EA%BB%98%20%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20%EC%97%AC%EB%9F%AC%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EA%B2%BD%EB%A1%9C%EB%A1%9C%20%EC%82%AC%EC%A0%84%20%EC%A0%95%EC%9D%98%EB%90%9C%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
90일이 지난 특정 디렉터리의 파일을 삭제하는 스크립트를 갖고 싶습니다. 그림에 표시된 것처럼 서로 다른 경로를 가진 8개의 디렉터리가 있습니다.
다음과 같은 디렉토리에서 find 명령을 실행할 수 있습니다.
find /directory1/dir2/dir3/dir4/ -mtime +90 | wc -l
이 명령은 6401과 유사한 결과를 제공합니다.
하지만 살펴봐야 할 디렉토리가 8개 있습니다. 디렉토리 목록을 변수로 구성하려면 어떻게 해야 합니까? 나는 가지고있다:
variable
DIRLIST=/directory1/dir2/dir3/dir4/ /directory1/dir2/dir3/dir5/ /directory1/dir2/dir3/dir6/ /directory1/dir2/dir3/dir6/ /directory1/dir2/dir3/dir7/
command
find $DIRLIST | wc -l
출력은 다음과 같습니다.
nameofscript.sh[2]: /directory1/dir2/dir3/dir5/: 0403-006 실행 권한이 거부되었습니다.
find 명령에서 디렉토리만 호출하면 명령이 작동하므로 이것이 실제로 권한 문제가 아니라는 것을 알기 때문에 이것은 이상합니다.
어떤 도움이라도 대단히 감사하겠습니다.
답변1
$DIRLIST를 잘못 선언했습니다.
배열변수를 선언하는 방법입니다.
DIRLIST=(/directory1/dir2/dir3/dir4/ /directory1/dir2/dir3/dir5/ /directory1/dir2/dir3/dir6/ /directory1/dir2/dir3/dir6/ /directory1/dir2/dir3/dir7/)
그런 다음 find 명령을 실행하십시오.
find "${DIRLIST[*]}" | wc -l