`...`를 이용하는 방법은 파일 이름에 공백이 있는 경우 제대로 동작하지 않을 가능성이 높습니다.
$ touch "abc" "who am i"
$ rm `ls | grep -v abc`
rm: cannot remove `who': No such file or directory
rm: cannot remove `am': No such file or directory
rm: cannot remove `i': No such file or directory
원하는 파일 이름이
원하는 파일 이름이 abc 라면 아래와 같이 하시면 됩니다.
rm `ls | grep -v abc`
`...`은 공백에 취약합니다.
`...`를 이용하는 방법은 파일 이름에 공백이 있는 경우 제대로 동작하지 않을 가능성이 높습니다.
따라서, 제대로 하려면 find를 이용하는 것이 좋습니다.
$ find . -maxdepth 1 -type f -not -name "abc" -exec rm '{}' ';'보기엔 복잡하지만 그리 어렵지는 않습니다. 쓸데없이 하위 디렉터리까지 뒤지는 것을 막기 위해
-maxdepth 1을 주고, 디렉터리가 아닌 일반 파일만 대상으로 하기 위해-type f를 사용했습니다.똑같이 했는데
감사합니다.
/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/
그리고 rm `...` 방식은
그리고 rm `...` 방식은 파일이 엄청나게 많을 경우 제대로 동작하지 않을 수도 있습니다.
이 경우, find 명령의 -path ... -prune과 -exec rm ...을 쓰는 방식으로 해결할 수 있습니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기