디렉터리 내에 하위 디렉터리를 만드는 방법은 무엇입니까? [폐쇄]

디렉터리 내에 하위 디렉터리를 만드는 방법은 무엇입니까? [폐쇄]

zsh 쉘 스크립트를 사용하여 사진 관리자를 만들려고 합니다. 하지만 각 기본 디렉터리에 날짜를 기준으로 하위 디렉터리를 만드는 데 문제가 있습니다. 현재 스크립트는 내가 만든 폴더에서 시작하고 매개변수를 사용합니다(편집하려면 파일이 필요하므로 첫 번째 CD는 $1입니다). 둘째, 내 문제와 관련이 없는 일부 이름을 변경했습니다. 다음으로, 각 날짜에 대한 디렉터리를 만들고 사진을 올바른 디렉터리로 이동합니다.

문제는 각 날짜 폴더를 반복하여 2개의 새 하위 디렉터리(jpg 및 raw)를 만들고 싶다는 것입니다. 하지만 코드를 실행하면 해당 파일이나 디렉터리가 없다는 오류가 발생합니다.

이것은 내 현재 스크립트입니다.

#!/bin/zsh.
cd $1
for i in *.JPG;
do
        mv $i $(basename $i .JPG).jpg;
done
        
for i in *;
do
       d=$(date -r "$i" +%d-%m-%Y)
       mkdir -p "$d"
       mv -- "$i" "$d/";
done
for d in *;
do
        cd $d
        for i in *.jpg;
        do
                mkdir -p "jpg"
                mv -- "$i" "jpg";
        done

        for i in *.NEF;
        do
                mkdir -p "raw"
                mv -- "$i" "raw";
        done
done

내가 어디에서 잘못되고 있는지 아는 사람이 있다면 무엇이 잘못되고 있는지 모르고 내가 아는 한 나노에는 디버거가 없기 때문에 정말 도움이 될 것입니다.

실수

➜  files sh test2.sh sdcard1 

test2.sh: line 16: cd: 05-03-2022: No such file or directory
mv: rename *.jpg to jpg/*.jpg: No such file or directory
mv: rename *.NEF to raw/*.NEF: No such file or directory
test2.sh: line 16: cd: 23-10-2021: No such file or directory
mv: rename *.jpg to jpg/*.jpg: No such file or directory
mv: rename *.NEF to raw/*.NEF: No such file or directory

답변1

for d in *;
do
        cd $d

내가 아는 한 이것은 버그입니다. 디렉토리에 루프를 생성했습니다 d. 당신은 CD를 입력했지만 $d루프는 종료되지 않습니다.

        done
        cd ..
done

따라서 두 번째 반복에서도 $d여전히 첫 번째 하위 디렉터리에 있으며 물론 두 번째 $d하위 디렉터리는 포함되지 않습니다.

그건 그렇고, days 를 추가하여 주문합니다 %d-%m-%Y. 물론 자유롭게 할 수 있지만 연도별로 정렬하면 카탈로그가 더 깔끔하게 정리된다는 것을 알 수 있습니다 %Y-%m-%d.

관련 정보