디렉토리 아래의 모든 심볼릭 링크를 연결 해제하는 방법은 무엇입니까?

디렉토리 아래의 모든 심볼릭 링크를 연결 해제하는 방법은 무엇입니까?

다음과 같이 심볼릭 링크의 연결을 해제하고 싶습니다.

unlink *

그러나 그것은 말한다unlink: extra operand

링크 파일만 삭제하고 원본 파일은 유지하고 싶습니다.

답변1

"*"를 사용하면 현재 위치에 있는 모든 파일과 디렉터리의 연결을 해제하려고 합니다.

unlink는 파일이나 디렉터리를 처리할 수 없으며 링크만 처리할 수 있습니다. 다음과 같이 find 명령을 사용하여 모든 링크를 찾아 링크를 해제합니다.

find . -type l -exec unlink {} \;

답변2

. find … -exec …​필요 unlink하거나 rm의 결과가 필요한 경우 find해당 항목을 사용하세요.-delete대신 옵션.

find . -maxdepth 1 -type l -delete

-type l이 명령은 현재 디렉터리(하위 디렉터리가 아님; *하위 디렉터리로 내려가지 않으므로 이것이 원하는 것이라고 가정함) 에서 모든 심볼릭 링크( )를 찾아서 삭제합니다. 기본 동작은 심볼릭 링크를 따르지 않는 것이므로 원본 파일은 영향을 받지 않습니다.

답변3

이 명령은 현재 폴더의 모든 심볼릭 링크를 찾아서 제거하며 하위 폴더로 재귀하지 않으며 도트 파일을 무시합니다.

find . -maxdepth 1 -type l ! -name '.*' -delete

관련 정보