rm은 디렉토리, 심볼릭 링크 및 심볼릭 링크 대상을 제거합니까? [복사]

rm은 디렉토리, 심볼릭 링크 및 심볼릭 링크 대상을 제거합니까? [복사]

두 개의 디렉토리가 있습니다: /all/origins/& /all/links/.

in 의 모든 항목은 links/in 의 항목을 개별적으로 가리키지 origins/만 in 의 모든 항목이 origins/서로 관련되는 것은 아닙니다 links/. (정사각형, 직사각형, 분류 계층 구조를 이해하셨나요?)이는 ln -s하드 링크가 아닌 심볼릭 링크( )입니다.

1.의 모든 항목 links/은 물론 2.의 심볼릭 링크 대상 origins/(에 있는지 여부는 알 수 없음 origins/)과 3. links/디렉터리 자체도 제거해야 합니다.

무엇rm유닉스 명령전체 links/디렉토리와 심볼릭 링크가 있는 심볼릭 링크 대상을 삭제하려면 무엇을 입력해야 합니까 origins/?

나는 다음과 같은 것을 찾고 있습니다 : rm -R /all/links또는 rm -r --follow-all-ln /all/links.

인수가 포함된 명령이 작업을 수행하지 않는 경우 rm이것이 제가 선호하는 것이며 제목에 암시되어 있으므로 명시적으로 명시해 주십시오(Unix 및 Linux rm반복 없이 수행 할 수 있습니까 do? -오직이것이 작동하지 않으면 어떤 루프인지 명시하고 설명하십시오 do. )

답변1

문제가 발생할 경우를 대비해 먼저 데이터를 백업하세요.

/all/links/내가 이해한 바로는 디렉토리의 모든 내용 과 해당 디렉토리 내의 링크가 가리키는 파일을 삭제하고 싶다는 것입니다 .

원하는 대로 간단한 Unix 명령으로는 이 작업을 수행할 수 없지만 간단한 스크립트를 사용하여 수행할 수 있습니다.

#!/bin/bash

for i in /all/links/*
do
rm  "$(readlink -f $i)"
rm "$i"
done

rmdir /all/links

말씀하신 대로 안에 있는 모든 파일은 심볼릭 링크이므로 모든 값이 링크인지 /all/links/확인할 필요가 없습니다 .i

관련 정보