創建一個shell腳本(sorter.sh),該腳本循環遍歷用戶使用「讀取」內建程序給出的目錄中的所有項目。該輸入需要能夠使用代字號接受目錄。腳本必須驗證輸入並使用循環才能在驗證完成後繼續執行腳本。它必須驗證給出的目錄是一個目錄。將基於第一個字母的文件獲取到目錄中
腳本在迭代目錄中的項目時應測試項目以查看它們是否是目錄或文件。如果它們是目錄,那麼它們需要重新命名以將當前日期添加到目錄名稱的末尾。如果它們是文件,它們需要複製到用戶給出的另一個目錄中,並且強制測試的目的必須是路徑(〜/ Desktop/sorted)。請注意,您無法將此目錄路徑硬編碼到程序中,您必須使用來自用戶的變量。在這個其他目錄中,腳本還必須創建以「cis90-」開頭和a到z結尾命名的目錄。所以前三個目錄將是「cis90-a」,「cis90-b」,「cis90-c」。正在複製的文件需要按字母順序複製到文件夾中。所有以字母「a」開頭的文件進入「cis90-a」文件夾,以字母「b」開頭的文件進入「cis90-b」文件夾,以字母「c」開頭的文件進入「cis90 -c「目錄。爲了節省一些額外的工作後,你到「C」所有額外的文件應該進入「cis90-D」目錄。
我已經得到儘可能遠的地方,我需要去的目錄和文件的項目。不知道如何將文件放入cis90文件夾。這是迄今爲止我所擁有的。
編輯:我現在正在研究使用case命令來分隔目錄和文件。然後將這些文件複製到各自的文件夾中。
#!/bin/bash
DATE=$(date +%m%d%Y)
read -p "Enter directory for items to be sorted: " dir
eval dir=$dir
while [ -z "$dir" ]; do
read -p "Empty entry. Enter directory: " dir
done
while [ ! -d "$dir" ]; do
read -p "Invalid entry. Enter directory: " dir
done
read -p "Enter directory for cis90 directories: " cis
eval cis=$cis
for j in $cis; do
mkdir $cis/cis90-{a..z}
done
for i in $dir/*; do
if [ -d $i ]; then
echo "$i is a directory."
fi
done
'eval dir = $ dir'&'eval cis = $ cis'的用途是什麼? – anishsane
如果用戶輸入〜 – Shinkin
仍然不需要... 如果dir值類似'/ ls'(基本上,如果它包含命令和特殊字符),它將會失敗。 – anishsane