find 명령과 함께 사용하기 위해 여러 디렉토리 경로로 사전 정의된 변수를 설정하는 방법

find 명령과 함께 사용하기 위해 여러 디렉토리 경로로 사전 정의된 변수를 설정하는 방법

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

관련 정보