답변:
다른 방법으로는 다음이 포함됩니다.
특수 문자를 탈출 :
[~] $ rm \ "la \ *
find 명령을 사용하고 현재 디렉토리 만 검색하십시오. find 명령은 inode 번호를 검색 할 수 있으며 편리한 -delete
스위치가 있습니다.
[~] $ ls -i 7404301 "la * [~] $ find. -최대 깊이 1-타입 f-인치 7404301 ./"라* [~] $ find. -maxdepth 1-타입 f -inum 7404301-삭제 [~] $ ls -i [~] $
-xdev
마운트 된 다른 파일 시스템에도 같은 inode 번호를 가진 관련없는 파일이있을 수 있으므로 옵션을 사용 하여 검색을 제한해야합니다 .
어쩌면 나는 뭔가를 놓치고 있지만 ...
rm '"la*'
어쨌든 파일 이름에는 inode가 없으며 파일에는 없습니다. 파일 이름을 가리키는 모든 파일 이름을 제거하지 않고 파일을 제거하려고하면 파일 시스템이 손상됩니다.
당신이 경우 정말 이 작업을 수행 할 수 - 당신이 전혀 필요 같은 사용 사례 정말 보이지 않는, 당신은 디버깅 툴 파일 시스템을 시도 할 수 있습니다. 모든 것을 잃을 의향이 있다면 바로 그 것입니다.
예를 들어, ext2 / 3 / 4의 경우 debugfs
명령에 "kill_file"옵션이있어 inode를 가져 오는 것 같습니다. 다른 응답에서 언급했듯이 존재하지 않는 파일을 가리키는 디렉토리 항목이 있기 때문에 파일 시스템 이 손상됩니다. fsck
나중에 실행하면이 문제를 해결할 수 있습니다. 마운트 된 파일 시스템에서는이 작업을 수행 할 수 없습니다.
그러나 적절한 응답 이스케이프 / 따옴표를 사용 하고 이전 응답에서 언급 한대로 일반 명령으로 해당 파일을 삭제 하고 *와 같은 글러브 문자가 포함 된 파일 이름을 처리 할 때 추가 안전을 위해 사용 하는 것이 좋습니다.rm
rm -i
"특수 문자 이스케이프"접근 방식을 강력히 권장하지만 clri
실제로 수정 가능한 파일 시스템 손상을 원할 때 항상 명령이 있습니다.
clri
일반적으로 오라클 시스템 (예 : SunOS의)에만 존재합니다.
을 호출하여 대시로 시작하는 파일을 삭제할 수 있습니다 rm -- filename
.
내가 겪었던 과제는 대시로 시작하는 파일 이름을 제거하는 것이 었습니다. rm은 항상 파일 이름을 호스트 이름으로 해석하려고합니다. 나는 이것을 사용하여 이것을 해결했다 :
rm ./-g4xxx