指令碼:
1.在/qfedu目錄中批次建立10個檔案,檔名由10個隨機小寫字母+固定字元組成.固定字元 爲_html, 如:ahdkhzhdld_html。
2.將上述目錄中的檔案重新命名,將 html 換成 HTML。
3.僅保留上述目錄中最新的檔案,其它檔案都刪除掉。
感覺自己寫得太繁雜。。。
#!/bin/bash
#定義一個隨機生成10個字母的函數
function genLetters(){
letters=qwertyuiopasdfghjklzxcvbnm
name=
for i in {1..10}
do
num=$[ $RANDOM%26 ]
one_letters=${letters:$num:1} #變數切片
name=$name$one_letters
done
echo $name
}
echo "正在建立檔案..."
sleep 2
#開始建立檔案
for j in {1..10}
do
touch /qfedu/$(genLetters)_html
done
echo "檔案建立完畢!結果如下:"
ls /qfedu/ #直接展示第一步結果
sleep 5
echo "開始重新命名檔案...."
sleep 1
find /qfedu/ -name "*html" > /qfedu/oldname #將舊檔名寫入檔案
find /qfedu/ -name "*html"|sed 's/html/HTML/g' > /qfedu/newname #將新檔名寫入檔案
#開始重新命名
for i in {1..10}
do
#使用awk每次各讀取一個檔名
old_name=`awk 'NR=='$i'{print $1}' /qfedu/oldname`
new_name=`awk 'NR=='$i'{print $1}' /qfedu/newname`
mv $old_name $new_name
done
echo "重新命名完畢!結果如下:"
ls /qfedu/ #直接展示第二步結果
sleep 5
echo "正在刪除舊檔案..."
sleep 1
ls -l /qfedu/|awk 'NR!=1{print $NF}' >/tmp/all_file_name #將所有檔名寫入新的資料夾
total=`cat /tmp/all_file_name |wc -l` #統計一個有多少個檔案
newestFile=/qfedu/newname #這個是最新的檔案,因爲他在上面的回圈中最後被呼叫
for i in `seq 1 $total`
do
file_name=/qfedu/`sed -n "${i}p" /tmp/all_file_name` #逐個取出檔名
test $file_name -ot $newestFile #檢查是否比最新的檔案要舊
result=`echo $?` #如果返回0,則比最新的檔案要舊
[ $result -eq 0 ]&& rm -rf $file_name && echo "已刪除$file_name"
done
echo "舊檔案刪除完畢!結果如下:"
ls /qfedu/ #直接展示第三步結果