리눅스(우분투)에서 한 파일 여러 디렉토리에 복사
글쓴이: jintak0401 / 작성시간: 금, 2018/12/21 - 2:30오후
여러 디렉토리 생성할 때 {01..20} 이나 {A..G} 와 같이 하면 알아서 01~20, A~G까지 폴더를 생성해 주더라구요. 그래서 day_01에 있는 Makefile을 day_{02..20}에 복사하고 싶어서 cp Makefile ../day_{02..20} 과 같이 했는데 안되던데 어떻게 해야 하나요? (한 폴더내에 day_{01..20} 이 있는 겁니다. 현재 디렉토리는 day_01 인 상태구요.)
Forums:
음 ..
brace expansion 기능은 그 문법에 맞게 여러 개의 argument 로 대체해 주는 기능입니다.
day_{1..3} 이라고 입력하면, 실제로는 day_1 day_2 day_3 으로 변환해서 입력되는거죠.
mkdir 같은 경우는 모든 argument 가 동등하게 처리되지니까 문제 없지만..
cp 의 경우는 마지막 argument 를 destination 으로 처리하게 되니..
위와 같이 destination 으로 expansion 을 쓸 수 없습니다.
이런 경우에는 직접 루프를 돌려서 처리하는게 간단하겠네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
정말 감사합니다. 혹시 하나만 더 물어도 될까요?
정말 감사합니다. 여기서도 for문을 쓸 수 있는지 몰랐네요.
혹시 Makefile 내에 day_01 이라는 부분이 있는데, 그 부분을 각 복사되는 디렉토리의 이름에 맞게 수정하면서 복사도 가능한가요? 예를 들어 day_08 폴더내에는, Makefile 내에 있는 day_01 을 day_08 로 고치면서 복사가 가능한가요? vim 내에서 특정 단어를 고치는 방법은 :s/old/new/g 로 하면 되는 것을 알고 있으나 for문과 같이 연계해서 사용할 수 있는지 여쭙고 싶습니다.
음 ..
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
minor revision
for i in {02..20}; do sed "s/day_01/day_$i/g" Makefile > ../day_$i/Makefile; done
http://porkmail.org/era/unix/award.html#uucaletter
댓글 달기