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
.