강좌 & 팁
리눅스에서 특수문자 파일 삭제
리눅스 환경에서 파일을 삭제할 때, rm 명령을 사용하면 쉽게 지울 수 있습니다. 하지만, 가끔씩 예외 상황이라는게 발생되서 지우기 힘들 파일들이 생깁니다.
1. 일반 파일 삭제
일반적인 파일을 삭제할 경우엔 rm 명령을 사용합니다.
$ rm file.txt
2. 특수 문자
그런데 간혹 특수문자들이 앞에 붙어서 삭제하기 힘든 파일이 있습니다. 주로 \ 또는 -로 시작하는 파일들입니다.
이것을 rm 명령으로 지워보도록 하겠습니다.
$ rm -file.txt
하지만 지워지지가 않습니다. -뒤에는 옵션이 붙기 때문에 파일명으로 생각하지 않고, 옵션으로 판단했기 때문입니다.
공백이 있는 파일(예를 들어, "hello world.txt" 파일)들은 큰 따옴표 안에 넣어서 지웠습니다. 이 방법으로 지워보도록 하겠습니다.
$ rm "-file.txt"
지워지지 않습니다. orz
이럴 땐, 특수 기호 앞에 현재 경로를 붙여주거나 ./\ 을 앞에 붙여주면 문자로 인식을 하게 해주면 됩니다.
rm ./-file.txt 또는 rm ./\-file.txt
위와 같이 하면 -, \ 붙은 파일들이 잘 지워집니다.
3. 인코딩이 깨진 파일 삭제
인터넷에서 파일을 다운로드 받거나 Samba로 접근해서 작업을 하는데 가끔씩 파일명이 깨져서 곤란하게 할 때가 있습니다. 그럴 때 파일 속성 중에 num 값을 가지고 수정하는 방법이 있습니다. (현재 환경에서 임의로 글자를 깨지게 할 수 없어서 파일을 삭제하는 방법을 설명 드립니다.)
디렉토리에서 파일 목록을 볼때, ls 라는 명령을 주로 사용합니다. 저는 주로 ls -l 이라고 자주 사용하는데, 여기서 끝에 소문자 i를 입력해줍니다.
먼저 ls -l 옵션으로만 목록을 보도록 하겠습니다.
$ ls -l
이번에는 ls -li 옵션을 붙였습니다.
$ ls -li
왼쪽에 보면 16914777 이라는 알 수 없는 숫자가 붙어있습니다. 이게 파일의 고유번호인거 같습니다. 이것을 가지고 파일을 삭제하도록 하겠습니다.
rm 명령으로는 안되고, find 명령을 통해서 inum 값을 입력해서 삭제하도록 합니다.
$ find . -inum 16914777 -exec rm -f {} \;
다시 ls -li 명령으로 목록을 봅니다.
$ ls -li
지워지지 않은 파일이 삭제된 것을 확인할 수 있습니다.
|