inflearn logo
강의

講義

知識共有

Linux コマンドラインツール (Full ver.)

ファイルを探して

특정 디렉토리를 제외하고 삭제가 가능할까요?

解決済みの質問

1853

gini

投稿した質問数 3

0

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

 

 

linux

回答 1

2

learnit

안녕하세요. 서진휘님

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