bash: /bin/rm: Argument list too long
이런 경우는 정말 삭제할 파일이 너무나 많은 경우로, 인자로 해당 리스트가 다 넘어가지 못했기 때문이다. 이럴때 find 를 이용해 보자. *.log 라는 파일을 다 삭제하는 경우 현 디렉토리에서 *.log 를 찾아서 xargs 로 Input 을 받아 rm 명령어로 삭제하는 것이다.
find . -name '*.log' | xargs rm
이러면 일단 삭제는 할 수 있다. 또, 파일이름이 이상해서 삭제가 안되는 경우도 있다. 그러면 inode 번호를 이용해 삭제하면 된다. ls 명령어에서 -i 옵션은 inode 번호를 보여준다. 그러면 find 의 -inum 옵션을 이용해서 아래와 같은 형태로 삭제할 수 있다.
$ ls -l
total 0
-rw-r--r-- 1 rigel rigel 0 May 19 23:33 test.txt
$ ls -li
total 0
38207514 -rw-r--r-- 1 rigel rigel 0 May 19 23:33 test.txt
$ find . -inum 38207514 -exec rm {} \;
$ ls -l
total 0
$
total 0
-rw-r--r-- 1 rigel rigel 0 May 19 23:33 test.txt
$ ls -li
total 0
38207514 -rw-r--r-- 1 rigel rigel 0 May 19 23:33 test.txt
$ find . -inum 38207514 -exec rm {} \;
$ ls -l
total 0
$
시스템 운영에 참고하길 바란다.
댓글 없음:
댓글 쓰기