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


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.