심볼릭 링크에 매핑된 폴더를 제외한 모든 폴더 삭제 [닫기]

심볼릭 링크에 매핑된 폴더를 제외한 모든 폴더 삭제 [닫기]

사용하지 않는 폴더를 삭제해야 합니다. 이 폴더를 가리키는 몇 가지 심볼릭 링크가 있습니다. 내 요구 사항은 세 단계입니다.

1) 비어 있지 않은 최상위 수준의 사용 가능한 모든 폴더를 가져옵니다.

2) 비어 있지 않은 모든 폴더와 해당 폴더를 가리키는 심볼릭 링크를 가져옵니다.

3) 심볼릭 링크에 없는 폴더를 삭제하세요. 그럼 기본적으로 1단계~2단계입니다.

예:

폴더 A, B, C A, B, C에는 x, y, z와 같은 여러 폴더가 있습니다.

A(x1, y1,z1), B (x2, 2, z2), C(x3, y3, z3)

심볼릭 링크 폴더 1(또 다른 심볼릭 링크 2도 있음)

a-->A/x1
b-->C/z3
c-->B/y2 

먼저 비어 있지 않은 모든 항목을 가져온 다음 이러한 심볼릭 링크 포인트를 가져와야 합니다. 마지막으로 폴더를 삭제해야 하며(비어 있지 않음) 심볼릭 링크를 가리키지 않아야 합니다.

게시물을 거의 본 적이 없지만 특정 또는 특정 유형의 폴더를 제외합니다. 조언해주세요.

답변1

rmdir이 명령은 빈 디렉터리만 삭제한다는 사실을 활용할 수 있습니다 .

처음에는 find <folder structure root> -type d모든 폴더 목록(비어 있거나 비어 있지 않음)을 수집하는 데 사용되었습니다. 임시 파일에 저장하세요.

그런 다음 모든 심볼릭 링크 대상 목록을 수집합니다. 이 목록을 사용하여 첫 번째 목록에서 일치하는 폴더를 필터링하여 세 번째 목록(심볼릭 링크 대상이 아닌 모든 폴더)을 생성합니다.

rmdir그런 다음 세 번째 목록의 각 폴더에서 실행하고 "디렉토리가 비어 있지 않음" 오류를 의도적으로 무시합니다. 실제로는 빈 폴더만 삭제됩니다.

관련 정보