우분투에서 bash 에서 for loop 질문 하나 드립니다.
겨
겨울심장 (210.♡.245.252)
2024년 4월 30일 PM 04:50 · 수정됨(05. 01. 11:57)
조회 332 공감 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)
-
항항상초보
24.04.30 · 175.♡.194.75
- 겨
겨울심장
→ 항상초보 작성자
24.04.30 · 219.♡.183.66
해결했습니다. 감사합니다! -
까까만청년
24.04.30 · 211.♡.125.5
seq 1 99 | awk '{ system("cp "$1"/*.dcm sample/"$1".dcm")} '
잘 안될 수도 있어요 ^^.. 전 저녁 먹으러... - 겨
겨울심장
→ 까만청년 작성자
24.04.30 · 219.♡.183.66
해결했습니다. 감사합니다! -
디디클
24.04.30 · 124.♡.100.52
seq 1 99 | xargs -t -I{} sh -c 'cp {}/*.dcm sample/{}.dcm'
xargs 명령어로도 확장 할 수 있습니다. - 겨
겨울심장
→ 디클 작성자
24.04.30 · 219.♡.183.66
해결했습니다. 감사합니다! -
동동독도
24.05.01 · 198.♡.180.151
이런 스크립트 전 chatGPT한테 물어보니 잘 알려주더라고요. 물론 원하는걸 얻기위해서 여러번 물어봐야 합니다. - 겨
겨울심장
→ 동독도 작성자
24.05.01 · 219.♡.183.66
감사합니다
댓글을 작성하려면 이 필요합니다.
아래 스크립트는 각 숫자 이름의 폴더에서 .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 사용해봤습니다.