inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Công cụ dòng lệnh Linux (Phiên bản đầy đủ)

Tìm file giúp tôi

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

Đã giải quyết

1853

gini

3 câu hỏi đã được viết

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

Câu trả lời 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

16

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