將文字清單讀入動態數組?

將文字清單讀入動態數組?

嘗試自動化一些工作,這包括許多資料夾生成,但我正在考慮使用動態數組來做到這一點,讓我知道這聽起來如何。

我的腳本的第一部分是使用以下命令匯出目錄清單:

ls /home/USER/Downloads/ > "/home/USER/Desktop/scripts/FolderList.txt"

它給出了預期的輸出:

Folder With Some Long Title
Folder With Another Long Title

在此範例中,我只給出了(2),但可能有超過1500 個資料夾,並且我已經編寫了在伺服器上建立其他資料夾的命令,並根據原始資料夾名稱自動命名它們,但我遇到的問題是我希望我的腳本能夠索引所有資料夾並執行我的命令(大約有 8 個命令,主要是字串操作等)。所以我正在考慮獲取目錄中項目的數量,然後將它們寫入上面提到的文本文件,然後使用 FOR 循環運行包含我的 8 個左右命令的次數?有什麼想法或更好的想法嗎?我可以使用以下方法來取得計數:

wc -l FolderList.txt | awk '{ print $1 }'

但我不確定如何建立或管理動態數組並將其與 for 循環一起使用以透過我的命令進行索引。

以下是一些附帶的腳本,目前已註解掉一些以進行模組化測試:

#TestString="Customer Info (YEAR) [PMNAME] [OWNERNAME] [EETYPE]"
cd "/home/USER/Downloads/"
ls /home/USER/Downloads/ > "/home/USER/Desktop/scripts/FolderList.txt"
wc -l FolderList.txt | awk '{ print $1 }'

#CUSTINFO=${TestString/(*)*}
#YEAR=$(grep -o '(.*)' <<<"$TestString")
#RESO3=$(grep -o '\[.*\]' <<<"$TestString")
#RESO2=${RESO3//\[PMNAME\]/}
#RESO_FINAL=${RESO2//\[EETYPE\]/}
#FULL_NAME=$TITLE_FINAL$CUSTINFO$YEAR
#mv "/home/USER/Downloads/$DOWNLOAD_NAME" "/home/USER/Downloads/$FULL_NAME"
#for f in */* ;do fp=$(dirname "$f"); ext="${f##*.}" ; mv "$f" "$fp"/"$fp"."$ext" ;done

答案1

根據命令和註釋,看起來您想要做的是:

for TestString in /home/USER/Downloads/*
do 
    #CUSTINFO=${TestString/(*)*}
    #YEAR=$(grep -o '(.*)' <<<"$TestString")
    #RESO3=$(grep -o '\[.*\]' <<<"$TestString")
    #RESO2=${RESO3//\[PMNAME\]/}
    #RESO_FINAL=${RESO2//\[EETYPE\]/}
    #FULL_NAME=$TITLE_FINAL$CUSTINFO$YEAR
    #mv "/home/USER/Downloads/$DOWNLOAD_NAME" "/home/USER/Downloads/$FULL_NAME"
    #for f in */* ;do fp=$(dirname "$f"); ext="${f##*.}" ; mv "$f" "$fp"/"$fp"."$ext" ;done
done

外部 for 迴圈迴圈遍歷檔案 in /home/USER/Downloads/(透過通配符擴充),TestString依序設定每個檔案名稱。

相關內容