우분투에서 bash 에서 for loop 질문 하나 드립니다.

알림
|
X

페이지 정보

작성자 no_profile 겨울심장 210.♡.245.252
작성일 2024.04.30 16:50
211 조회
0 추천
글쓰기

본문

특정 숫자이름의 폴더에 있는 파일을 해당숫자의 이름으로 바꾸어 복사저장하려는데요


for i in 1 2 ... 99

do

cp 'i'/*.dcm sample/'i'.dcm

done


이렇게 해서 1 2 .. 99 이름 안에 있는 aaa 확장자를 가진 파일을 (*.aaa) (폴더마다 aaa 파일 1개 있음)

파일이름을 폴더이름으로 바꾸어 sample 폴더 안으로 저장하려고 해요. 

루프 돌리는 i 를 지정하는게 '' 아니라 어떻게 해야 하나요? 

  • 게시물이 없습니다.
댓글 8 / 1 페이지

항상초보님의 댓글

작성자 항상초보 (175.♡.194.75)
작성일 04.30 18:07
Linux 쉘 스크립트에서 변수를 사용할 때, 변수의 값을 확장하려면 $ 기호를 사용해야 합니다. 그리고 파일 이름이나 경로에서 변수를 사용할 때는 따옴표로 묶지 않거나, 변수 부분만 더블 쿼트(")로 묶어야 합니다.

아래 스크립트는 각 숫자 이름의 폴더에서 .aaa 확장자를 가진 파일을 찾아서 파일 이름을 폴더 이름과 동일하게 하여 sample 폴더에 복사합니다. 파일이 각 폴더에 하나씩만 있다고 가정하면 다음과 같이 스크립트를 작성할 수 있습니다:

#!/bin/bash

for i in {1..99}; do
    # $i 폴더에서 .aaa 확장자를 가진 파일을 찾아서 복사
    cp "${i}"/*.aaa "sample/${i}.aaa"
done

이 스크립트를 설명하면:

{1..99}는 1부터 99까지의 범위를 생성합니다.
cp "${i}"/*.aaa "sample/${i}.aaa"에서 ${i}는 현재 반복의 숫자를 나타냅니다. 이 명령은 각 숫자 이름 폴더에서 .aaa 파일을 찾아 sample 디렉토리로 파일 이름을 변경하여 복사합니다.
위 스크립트를 실행하기 전에 sample 폴더가 이미 존재하는지 확인하고, 없다면 생성해야 합니다:

gpt4 사용해봤습니다.

겨울심장님의 댓글의 댓글

대댓글 작성자 no_profile 겨울심장 (219.♡.183.66)
작성일 04.30 18:43
@항상초보님에게 답글 해결했습니다. 감사합니다!

까만청년님의 댓글

작성자 까만청년 (211.♡.125.5)
작성일 04.30 18:26
seq 1 99 | awk '{ system("cp "$1"/*.dcm sample/"$1".dcm")} '
잘 안될 수도 있어요 ^^.. 전 저녁 먹으러...

겨울심장님의 댓글의 댓글

대댓글 작성자 no_profile 겨울심장 (219.♡.183.66)
작성일 04.30 18:43
@까만청년님에게 답글 해결했습니다. 감사합니다!

디클님의 댓글

작성자 디클 (124.♡.100.52)
작성일 04.30 18:42
seq 1 99 | xargs -t -I{} sh -c 'cp {}/*.dcm sample/{}.dcm'

xargs 명령어로도 확장 할 수 있습니다.

겨울심장님의 댓글의 댓글

대댓글 작성자 no_profile 겨울심장 (219.♡.183.66)
작성일 04.30 18:43
@디클님에게 답글 해결했습니다. 감사합니다!

어쩌다님의 댓글

작성자 어쩌다 (198.♡.180.151)
작성일 05.01 05:22
이런 스크립트 전 chatGPT한테 물어보니 잘 알려주더라고요. 물론 원하는걸 얻기위해서 여러번 물어봐야 합니다.

겨울심장님의 댓글의 댓글

대댓글 작성자 no_profile 겨울심장 (219.♡.183.66)
작성일 05.01 11:57
@어쩌다님에게 답글 감사합니다
글쓰기
홈으로 전체메뉴 마이메뉴 새글/새댓글
전체 검색