linux下用bash寫乙個批量解壓指令碼

2021-09-05 11:29:18 字數 2270 閱讀 4467

在linux下進行學習時,發現有乙個學習資源資料夾下含有大量的rar格式壓縮包,便想著利用bash shell 寫乙個指令碼來一次性解壓所有的壓縮包.

首先測試該段**能否正常判斷每個資料夾下rar檔案是否存在:

#迴圈遍歷部分

i=1#[ ]與內部字元間應該有空格

while [ $i -lt 25 ]

do#-f 引數 判斷資料夾下的檔案是否存在

file="/home/yang/downloads/php_resource/day$/day$.rar"

if [ -f "$file" ]

# if [ $i -lt 24 ]

then

#unrar x /home/yang/downloads/php_resource/day$/day$.rar

echo "$file"

filet "i++"

done

測試結果如下:

看到這個結果我發現有的資料夾中rar檔案已解壓,這是再解壓就要求unrar解壓中引數包含覆蓋功能.

在終端內: man unrar:

另一種解決方法是對是否已存在該目錄進行判斷:

#迴圈遍歷部分

i=1#[ ]與內部字元間應該有空格

while [ $i -le 25 ]

do#-f 引數 判斷資料夾下的檔案是否存在

刪除注釋,開啟unrar解壓命令:

但是發生了一件不幸的事,每個資料夾的檔案沒有解壓到單獨資料夾:

於是,便需要先刪除它們然後再修改解壓命令:

#迴圈遍歷部分

i=1#[ ]與內部字元間應該有空格

while [ $i -le 25 ]

do#-f 引數 判斷資料夾下的檔案是否存在

file="/home/yang/downloads/php_resource/day$/day$.rar"

filedir="/home/yang/downloads/php_resource/day$/day$/"

filedir2="/home/yang/downloads/php_resource/day$/"

if [[ -f "$file" && ! -d "$filedir" ]]

# if [ $i -lt 24 ]

then

cd $filedir2

ls | grep -v "rar"

#用於刪除非rar目錄及檔案

#rm -f `ls | grep -v "rar"`

#rm -r `ls | grep -v "rar"`

unrar x -o+ /home/yang/downloads/php_resource/day$/day$.rar /home/yang/downloads/php_resource/day$/

filet "i++"

done

ok!    pefect!  該問題終於解決了!

自己寫的乙個linux下的bash安裝

每次安裝linux下的包的時候都要乙個個config make make install安裝,煩,抽了個空,查了些資料,寫了個bash安裝指令碼,分別安裝了openldapujs freeradiusujs及checkuserujs包,安裝時只需.install.sh即可,這三個包放在與instal...

用golang寫乙個proxy

我複雜的網路環境中,proxy是個很有用的工具,我們可以通過proxy 幫我們完成網路流量的 這個proxy得先能接收請求,所以這裡先啟動乙個tcp的監聽,獲取請求 func s server start glog.infof proxy listen in s,waiting for connec...

用python寫乙個restful API

coding utf 8 package.module python實現的圖書的乙個restful api.restful api 一般模式 get select 從伺服器取出資源 一項或多項 post create 在伺服器新建乙個資源。put update 在伺服器更新資源 客戶端提供改變後的完...