방법: 심볼릭 링크의 이름 찾기

방법: 심볼릭 링크의 이름 찾기

심볼릭 링크를 생성했는데 ln -s /home/orca/www/* /var/이제 삭제해야 합니다. 파일이 /var/www가득 차서 네트워크 파일을 모두 옮겨야 합니다 ./home/이게 내가 한 일이야.

나는에서 보았다여기간단히 말씀드린 것 뿐인데 rm symlink_name, 이름이 정확히 무엇인가요?

rm /home/orca/www/*                           ? 

책을 많이 읽었음에도 불구하고 마음이 비정통적이기 때문에 머리가 어지러워지는 경향이 있습니다. 이것은 실제 프로덕션 서버이므로 조치를 취하기 전에 주의를 기울여야 합니다. 적은 것이 더 많습니다. 후회하는 것보다 안전하고 싶습니다. 백업이 준비되어 있습니다.

답변1

문서 보기만린.

세 번째 양식을 사용했습니다.

ln [OPTION]... TARGET... DIRECTORY

모든 사람을 위한 링크가 생성됩니다.표적입력하다목차.

명령이 의 모든 파일 및 디렉터리(및 기타 객체)에 대한 링크를 생성했거나 생성하려고 시도했습니다 /home/orca/www.하지만이름이 이미 에 존재하는 경우 일부에서는 실패할 수 있습니다 /var. (이 경우 명령은 오류 메시지를 인쇄할 수 있습니다.)

일반적으로 비어 있지 않기 때문에 /var단순히 모든 것을 삭제할 수는 없습니다.

지금 제가 제안할 수 있는 최선의 방법은 (심볼릭 링크인 경우) /home/orca/www에 있는 모든 이름을 삭제하는 것입니다./var

이 루프는 삭제될 내용을 보여줍니다.

for i in /home/orca/www/*
do
    l=/var/"${i##*/}"
    if [ -h "$l" ]
    then
        echo rm "$l"
    fi
done

출력을 확인하십시오.이것이 원하는 경우 echo실제로 rm명령을 실행하려면 삭제하십시오.

for i in /home/orca/www/*
do
    l=/var/"${i##*/}"
    if [ -h "$l" ]
    then
        rm "$l"
    fi
done

답변2

그리고 zsh,

rm /var/*(@m-1)

/var지난 24시간 이내에 생성된 모든 심볼릭 링크가 삭제됩니다.

하지만:

rm /var/*(@m-1e['[[ $REPLY:P = /home/orca/www/* ]]'])

지난 24시간 동안 생성된 모든 심볼릭 링크를 삭제합니다.실제 경로(표준 절대 경로)는 패턴과 일치합니다( /home/orca/www/*또는 그 안에 있는 파일 자체에 심볼릭 링크가 있는 경우 작동하지 않습니다)./home/home/orca/home/orca/www

(파일을 삭제하기 전에 목록만 보고 싶다면 rm로 바꾸세요.)ls -ld

GNU를 사용하면 find다음도 수행할 수 있습니다.

find /var -maxdepth 1 -mtime -1 -lname '/home/orca/www/*' -delete

/var대상이 패턴과 일치하는 지난 24시간 이내에 생성된 /home/orca/www/*모든 심볼릭 링크를 제거합니다 .

(파일을 삭제하기 전에 목록을 보려면 -delete다음으로 대체하십시오)-ls

관련 정보