특정 디렉토리를 제외하고 삭제가 가능할까요?
home 디렉토리 밑에 a, b, c, d, e 디렉토리가 있고
각 디렉토리 밑에는 a1,a2,a3,a4,a5, ......, a100
와 같이 100개의 디렉토리가 있다고 할때,
디렉토리 c , 디렉토리 c33, c33안에 들어있는 파일 을 제외하고 모두 삭제 할 수 있을까요?
(각 디렉토리는 모두 파일을 가지고 있음)
저는 아래와 같이 생각했는데 원하는대로 안될것 같고 더 좋은 방법이 있을꺼같아 질문드립니다.
find /home/c/* ! -name "c33" -exec rm -r {} \;
rm -r home/a
rm -r home/b
rm -r home/d
rm -r home/e
回答 1
2
안녕하세요. 서진휘님
rm 명령어에 특정 패턴에 매치하는 파일에 대해 예외 처리하는 옵션이 없기 때문에 find와 같은 다른 툴을 이용하시는 것이 타당한 방법입니다. 그래서 아래와 같이 커맨드라인을 만들어봤습니다.
find $(pwd)/{a,b,c,d,e} -type d -not \( -path "$(pwd)/c" -or -path "$(pwd)/c/c33" \) | xargs rm -rf
현재 디렉터리의 a, b, c, d, e 이하의 디렉터리에 대해 directory이면서 c와 c/c33을 제외한 디렉터리 목록을 만들어 rm 명령어의 입력으로 넣어주는 방법을 선택했습니다. find의 exec를 사용하면 디렉터리를 찾는 중간에 디렉터리를 삭제하게 되어 에러 메시지가 발생해 xargs를 이용하도록 했습니다.
한 줄에 목적하는 바를 이루었지만, 음.. 썩 좋아보이진 않네요. 한 줄에 원하는 명령어를 만드는 것도 중요하긴 하지만 readability도 좋지 않고, 코드를 유지보수하는 관점에서도 좋은 것 같지 않아서요. 차라리 코드를 여러 줄 작성하더라도 bash script를 이용하는 편이 더 좋은 방법일 것 같습니다.
답변이 늦어져 죄송합니다~
안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.
0
15
1
강의 질문 입니다
0
70
1
리눅스 개발자와 엔지니어
1
438
1
sort와 ps명령어
0
466
1
locate명령어와 ps명령어
0
336
1
sort 의 u 옵션
0
265
1
ls -al에서 공백기준으로 sort질문입니다.
0
509
1
tail 관련 질문 드립니다.
0
549
1
head 명령어 관련 질문
0
356
1
리눅스 배포판 질문합니다.
0
322
1
검색 14:56
1
255
1
백스페이스 누르면 앞칸으로 이동하는데요.
1
1160
1
빔 플러그인 설치
0
303
1
강사님한테 배운것들 맥 os 에서도 쓰임새있나요?
0
272
1
질문있습니다.
1
224
4
12분 10초부터 실습
0
290
1
커맨드가 root권한이 필요한지 명령 실행전에 알수있나요?
0
385
1
VIM 1강에서 사용하셨던 예제를 따라하고 싶은데 실습 파일을 주실 수 있을까요?
0
218
3
비주얼모드에대해서
0
204
1
강의자료는 없을까요?
1
231
1
안녕하세요! 질문이 있습니다.
1
152
2
질문 있습니다!
1
310
4
영상이 짤린건가요?
2
297
3
inflearn-lip파일 내용 하려면 다른 강의들 먼저 듣고 와야 하나요.
1
270
1

