RM/링크 해제 없이 삭제하는 방법

RM/링크 해제 없이 삭제하는 방법

제가 질문한 다른 질문과 관련이 있습니다.여기 [https://unix.stackexchange.com/questions/253932/rename-folder-with-odd-characters]

rm// 일반 바이너리를 우회하고 다른 방법을 사용하여 파일을 삭제할 수 있는지 궁금합니다 . 디스크에서 폴더나 파일의 정확한 위치를 찾아 해당 위치에 다른 데이터를 기록하여 폴더나 파일을 지우는 것이라고 할 수 있습니다. 이를 수행하는 방법과 운영 체제 또는 파일 시스템에 문제가 발생합니까?rmdirunlink

아니면.. 파일이라고 부르기가 망설여지는데, 이 폴더/파일에 대한 정확한 참조를 찾아서 연결 해제하는 것과 같이 16진수 편집기를 사용하여 보고 편집할 수 있는 디스크 영역이 있습니까? 그렇다면 HFS+ 및/또는 OS X에 대한 다른 접근 방식이 있습니까?

rmEDIT1: 저는 이 파일의 내용을 삭제하고 싶지 않고 / 이외의 방법을 사용하여 파일 및/또는 폴더를 삭제 하고 싶습니다 unlink. 법의학적 의미에서 데이터를 삭제하려는 것이 아니라 삭제를 거부하는 폴더를 삭제하려고 합니다(위에 링크된 질문 참조).

답변1

디스크 이미지 편집은 가능하지만 위험합니다. 이를 수행하는 데 도움이 되는 적합한 편집기가 있는 경우 변경하려는 데이터의 사본(작성 또는 기타)이 있는지 확인하는 것이 좋습니다.

가장 중요한 점은 디스크가 마운트 해제되어 사용 중이 아닌 동안에는 이 작업을 시도하지 마십시오. 부팅/시스템 디스크인 경우 복구 디스크와 같은 별도의 부팅 메커니즘을 사용해야 함을 의미합니다.

내가 선호하는 Linux 기반 복구 CD는시스템 복구 디스크, 그러나 HFS 도구가 포함되어 있는지 확실하지 않습니다(패키지 목록에 포함되어 있을 수도 있음). 이것은또 다른 가능한 해결책, 표준 Ubuntu 설치 디스크를 사용하지만 2009년 제품이므로 아마도매우 구식.

답변2

원본 데이터가 계속 존재하는 것에 신경 쓰지 않고 문자 인코딩 문제로 인해 직접 삭제할 수 없는 파일을 삭제하려는 경우 이것이 해결책입니다. 파일을 삭제할 수 있도록 이름 바꾸기를 사용하여 파일 이름을 바꾸는 작업이 포함됩니다. 다음 예에서는 현재 디렉터리의 모든 파일 및 디렉터리 이름에서 ASCII가 아닌 문자를 모두 제거합니다.

rename 's/[^\x00-\x7F]//g' ./*
rm new-filenames

정규식은 [^\x00-\x7F]다음에서 유래합니다.스택 오버플로 질문

하위 디렉터리를 탐색하려면 find를 사용하세요.

find . -exec rename -n 's/[^\x00-\x7F]//g' "{}" \;

이름을 바꿀 파일을 알려주는 대신 이름을 바꾸려면 -n 플래그를 제거하십시오.

관련 정보