我已經完成了少量的 bash 腳本撰寫。主要是根據我的需要修改腳本。
在這一點上我很難過。我需要一個腳本來讀取檔案夾內的子檔案夾名稱,并根據該子檔案夾名稱制作一個編號的檔案夾串列。
示例:我創建了一個名為“圖片”的檔案夾。然后在里面我創建一個名為“picture-set”的子檔案夾,我想要一個腳本來查看現有的子檔案夾名稱(picture-set),并創建另外 10 個檔案夾,并在檔案夾名稱的末尾附加序列號。例如:檔案夾是:圖片子檔案夾是:圖片集
想要創建:“picture-set-01”“picture-set-02”“picture-set-03”等等,最多10個。或者腳本中指定的數字。
檔案夾結構如下所示:
/home/圖片/圖片集
/home/圖片/圖片集-01
/home/圖片/圖片集-02
/home/Pictures/picture-set-03 ... 等等
我無法告訴腳本如何找到基本檔案夾名稱以創建其他檔案夾。即:“圖片集”
或者更好的選擇:將是創建一個檔案夾,然后根據父檔案夾名稱創建一組編號的子檔案夾。例如:/home/Songs - 將變為:
/home/Songs/Songs-001
/home/Songs/Songs-002
/home/Songs/Songs-003
等等。
請原諒我的錯誤格式...這是我第一次在這樣的論壇上提問。歡迎提供有關正確格式的任何鏈接或指標。
謝謝您的幫助。
uj5u.com熱心網友回復:
Bash 有一個引數擴展,您可以使用它來生成檔案夾名稱作為mkdir命令的引數:
#!/usr/bin/env bash
# Creates all directories up to 10
mkdir -p -- /home/Songs/Songs-{001..010}
如果您需要動態更改數字范圍以使用變數生成,則此方法不是很靈活。
因此,您可以使用 Bashfor回圈并列印具有所需位數的名稱并在回圈中創建每個目錄:
#!/usr/bin/env bash
start_index=1
end_index=10
for ((i=start_index; i<=end_index; i )); do
# format a dirpath with the 3-digits index
printf -v dirpath '/home/Songs/Songs-d' $i
mkdir -p -- "$dirpath"
done
uj5u.com熱心網友回復:
# Prerequisite:
mkdir Pictures
cd Pictures
# Your script:
min=1
max=12
name="$(basename "$(realpath .)")"
for num in $(seq -w $min $max); do mkdir "$name-$num"; done
# Result
ls
Pictures-01 Pictures-03 Pictures-05 Pictures-07 Pictures-09 Pictures-11
Pictures-02 Pictures-04 Pictures-06 Pictures-08 Pictures-10 Pictures-12
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/335107.html
標籤:猛击
上一篇:用于資料清理的Bashshell
