링크 자체를 삭제하지 않고 심볼릭 링크의 대상을 어떻게 삭제합니까?


10

~/Desktop/test.txt를 가리키는 심볼릭 링크 가 ~/rendu/test.txt있습니다.

의 경로 만 알고 심볼릭 링크를 삭제하지 않고 ~/Desktop/test.txt빠르게 삭제할 수 ~/rendu/test.txt있습니다.

이유를 알고 싶은 사람 : crypted.xxx데스크탑에 이름이 지정된 파일이 있는데,이 파일 에는 암호화되어 있으며 암호가 포함되어 있습니다.

암호화 된 파일을 업데이트하려고 할 때 파일을 해독 crypted.txt하여 특수 디렉토리에 만듭니다 . 따라서 실용적인 이유로 데스크탑에서 해당 파일에 대한 링크를 만듭니다. 그러나 내을보고 나서 crypted.txt이것을 빠르게 삭제하고 싶습니다 crypted.txt(데스크톱의 링크는 아님).


4
잠깐, 당신은 (질문과 같이) 파일 을 삭제 하거나 파일 의 내용 을 삭제하고
— 싶습니다

파일을 삭제하고 심볼릭 링크를 유지하십시오. 오해를 드려 죄송합니다
— Ugo Hed

2
어쩌면 전용 암호 관리자를 대신 사용할 수 있습니까? Keepass 는 예를 들어 꽤 좋으며 repos에 있습니다.
— evilsoup

답변:


11

를 사용 find하여 심볼릭 링크를 찾은 다음을 사용 readlink하여 대상의 전체 경로를 가져옵니다 rm.

find ~/Desktop/ -type l -name 'test.txt' -exec bash -c 'rm "$(readlink -f "$1")"' _ {} \;

또는 이미 링크 이름을 알고있는 것처럼 :

rm "$(readlink -f ~/Desktop/test.txt)"

4
그래도 상대 링크에주의하십시오. 상대 심볼릭 링크는 해당 디렉토리가있는 디렉토리를 기준으로 해석됩니다. 그러나 rm명령은 쉘의 현재 디렉토리를 기준으로 해석합니다. 따라서 해당 명령이 기호 링크가 가리키는 것과 다른 파일을 삭제할 가능성이 있습니다.
— kasperd

5
대상 심볼릭 링크가 상대 경로를 가리켜도 @kasperd With -f -e또는 -m전체 경로가 반환되므로 그렇습니다 . 또는의 경우에는 문제가 rm "$(readlink ~/Desktop/test.txt)"되지 않습니다 . -f -e-m
— kos

@kos 당신이 맞아요. 이 경우 경쟁 조건이있을 경우에만 걱정하면됩니다.
— kasperd

또는 realpath 를 사용할 수 있습니다 .이 경우에는 대상과 동일한 기능을 수행합니다 readlink -f(그러나 대상 자체가 링크가 아닌 경우에도 작동 함).
— leftaroundabout

6

간단히 사용하십시오 :

printf "" > "$(readlink '/path/to/link')"

파일 을 지우 거나

rm "$(readlink '/path/to/link')"

파일 을 제거 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.