Shell-Script
如何在目錄中創建子目錄?
我正在嘗試使用 zsh shell 腳本製作照片組織者。但我無法在每個主目錄中創建子目錄(基於日期)。目前腳本從我創建的文件夾開始並獲取一個參數(它需要編輯的文件,因此是第一個 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
如果有人知道我在哪裡犯了一個錯誤,那將非常有幫助,因為我不知道出了什麼問題,而且據我所知,nano 中沒有調試器。
錯誤
➜ 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
for d in *; do cd $d
據我所知,這是錯誤。您已經在您的目錄上創建了一個循環
d
。你 cd 進入$d
. 但是你的循環永遠不會 cd 退出done cd .. done
所以在第二次迭代中
$d
,你仍然在第一個子目錄中,當然不包含第二$d
個子目錄。順便說一句,您是按天增加訂購的,
%d-%m-%Y
。當然,您可以自由地這樣做,但您可能會發現按年排序可以更整齊地組織目錄,%Y-%m-%d
.