ディレクトリ内にサブディレクトリを作成するには? [閉鎖]

ディレクトリ内にサブディレクトリを作成するには? [閉鎖]

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

したがって、2番目の反復で$dもまだ最初のサブディレクトリにあり、もちろん2番目の$dサブディレクトリは含まれません。

ちなみに、daysを追加して注文します%d-%m-%Y。もちろん自由にできますが、年ごとに並べ替えると、カタログがよりきれいに整理されることがわかります%Y-%m-%d

おすすめ記事