728x90
실수 또는 우연찮게 특수문자가 들어간 디렉토리 또는 파일들이 생길 수 있습니다.
보통 rm "AAA BBB" 이런식으로 rm 뒤에다가 " " 를 추가해서 삭제를 할 수 있습니다. 이상한 이름을 가진 파일을 rm 뒤에다가 입력해야되는데, 방법이
1. bash 의 탭 기능을 이용한다.
: rm 뒤에서 삭제할 파일의 첫글자를 입력하고, 탭을 입력하면 자동으로 파일이름이 완성됩니다. 그럼 삭제가 가능합니다. (자동완성 기능은 csh 에서는 "set filec" 가 설정되어 있어야하지만, bash 에는 기본으로 포함됩니다.)
2. 입력이 불가능한 파일이름의 삭제는 find -inode -exec 를 이용한다.
: ls -lai 로 지우려고 하는 파일의 i-node(i 옵션) 를 알아냅니다. 그리고, find 옵션의 inum, exec 으로 삭제를 합니다.
예)
# cd /tmp
# ls -ali /tmp
합계 24
3702785 drwxrwxrwt 4 root root 4096 2010-08-19 10:53 .
2 drwxr-xr-x 21 root root 4096 2010-07-11 02:40 ..
5160972 drwxrwxrwt 2 root root 4096 2010-07-11 02:40 .ICE-unix
3866625 drwxr-xr-x 2 apache apache 4096 2010-03-14 14:00 .a
3720321 -rw-rw-r-- 1 aaa aaa 22 2010-08-17 10:17 a
# find . -inum 3720321 -exec rm {} \;
('{}' 뒤에 반드시 스페이스, ';'앞에 '\' 필요)
find man 페이지를 찾아보면 알겠지만, -exec 뒤의 rm 이 명령어 이고, "{}" 가 inum 3720321 인 a 를 가리킵니다. 그리고, 반드시 ';' 를 붙여서 명령어 종료를 나타냅니다. man 페이지에는 "rm {} +" 처럼 또다른 명령어 추가도 가능한 것으로 보입니다만...
'Engineering > Etc' 카테고리의 다른 글
자바스크립트 protect/pack 그리고 unpack (0) | 2010.09.08 |
---|---|
크롬 테마 만드는 방법 (0) | 2010.09.07 |
트위터 버튼 달기 (0) | 2010.08.18 |
웹 크롤링(web crawling) 방지와 wget(크롤링 무시) 옵션 (0) | 2010.08.10 |
MySQL Injection - load_file() (0) | 2010.07.30 |