이상한 이름의 파일을 삭제하는 방법?


33

POSIX 메모리 매핑 기능 ( mmap) 을 사용하는 프로그램을 작성했습니다

프로그램은 파일 ( a.dat)을 가져 와서 읽고 쓰기 위해 메모리 매핑합니다.

프로그램의 오류로 인해 프로그램을 실행할 때마다 이상한 이름 (예 :)이있는 파일 ?d?P?^z??d?P?^z?이 생성됩니다. 오류가 해결되었지만 파일을 삭제할 수 없습니다.

명령 행을 사용하거나 창 관리자에서 선택 / 삭제하여 파일을 삭제할 수 없습니다.

어떻게 삭제해야합니까? 우분투 11.04를 사용하고 있습니다.


1
파일 이름을 쉽게 입력 할 수 없더라도 그래픽 파일 관리자에서 파일 이름을 삭제하면 정상적으로 작동합니다. 어떤 오류가 발생합니까?
토마스

2
@Aditya, 작은 따옴표 ( rm '?d?P?^z??d?P?^z?')로 이름을 이스케이프 처리 할 때 명령 줄에서 이러한 파일을 삭제하는 데 아무런 문제가 없습니다 . 시도 했습니까?
Frédéric Hamidi

그래픽 창 관리자에서 삭제하면 파일 'filename'을 삭제할 수 없습니다. @ Frédéric Hamidi 하나의 파일을 삭제하는 데 도움을 주셔서 감사합니다. 그러나 이름이 '? m? P ???)? m? P ???)'인 다른 이름이 삭제되지 않습니다 ... 오류 메시지에 "rm :`? m? P ???)? ? P ???) ': 그런 파일이나 디렉토리가 없습니다 "
AK

1
@Aditya, 다른 파일의 이름에는 인쇄 할 수없는 문자가 있어야합니다. 다음 단계를 수행하십시오. 1 / 모든 유효한 파일을 해당 폴더 밖으로 옮기고 2 / rm *폴더 내에서 문제 를 해결하십시오.
프레데릭 하 미디

1
파일 이름을 입력 할 때 따옴표로 시작한 다음 작동하자마자 자동 완성을 사용하십시오 (1 ~ 2 자 뒤). 자동 완성은 [tab] 키를 누르면 쉘이 자동으로 이름을 완성하게됩니다. 이런 식으로 이름을 올바르게 이스케이프하는 것이 더 성공적 일 수 있습니다.

답변:


45

rm -i -- *각 파일을 삭제하라는 메시지가 표시됩니다. 파일이 많은 경우 '*'를 더 좁은 것으로 변경할 수 있습니다. 는 --라는 이름의 파일이 있으므로, 옵션 처리를 중지 -d에 의해 제거됩니다 rm성공적으로.

나는 과거에 그것을 사용했고 당신이 특별한 캐릭터 나 2가 마음에 들지 않을 때까지 작동합니다.


1
예를 들어 -d라는 파일에서는 작동하지 않습니다.
SCO

2
당신을 위해하지 작업을 수행하고의 버전에 따라 경우 @SCO은 rm, 당신이 할 수있는 rm -i -- * (가) --RM의 일부 버전을 알려줍니다 더 이상 명령 행 라인이 후 스위치가 있습니다 --및 파일 이름으로 추가 인수를 처리 할 수 있습니다.
JimR

1
사용 : 나는 설명을 포함해야한다이 대답은 @JimR에 의해 제안 생각 --에서 rm명령.
Felipe Alvarez

16

ls -liinode로 모든 파일을 표시 하는 데 사용할 수 있습니다 . 그런 다음이 명령을 실행하여 파일을 제거하십시오.

find . -inum ${INODE_NUM} -delete

-maxdepth 1안전을 위해 찾기에 추가 했습니다.

find . -maxdepth 1 -inum ${INODE_NUM} -delete

1
엄밀히 말하면 ls -i충분합니다.
Scott

ls파일을 삭제하지 않습니다. OP는 이것을 원한다.
Felipe Alvarez

4
대답의 첫 번째 줄은“ ls -li모든 파일을 inode로 표시 하는 데 사용할 수 있습니다.”라고 말합니다 . ls -i파일 이름 목록과 해당하는 inode 번호를 얻을 수있을 정도로 좋습니다. (물론 ls -ia도트 파일을 포함 하려면 필요 합니다.)
Scott

잘못된 파일 이름의 사용을 최소화하려면 -delete옵션을에 전달하는 것이 좋습니다 find.
ScumCoder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.