1. 程式人生 > >一個刪除資料夾下所有檔案的shell指令碼,不刪除最外層的資料夾

一個刪除資料夾下所有檔案的shell指令碼,不刪除最外層的資料夾

最近,由於工作需要,寫了一個刪除資料夾下所有檔案的shell指令碼,程式碼比較醜陋,但是可用,哈哈。centos7下親測可用。該指令碼只刪除父資料夾下的所有檔案和子資料夾,但不刪除父資料夾本身。

這個shell指令碼檔名是:clearFile.sh。內容是:

#! /bin/bash
function clearFile(){  
      if [`$1 -eq 'logs'` -o `$1 -eq 'log'`]; then
        echo "clearFile can be called"
        for file in `ls $1`  
                do   
                        if [ -d $1"/"$file  ];   then
                                echo "deleting directory: " $1"/"$file
                                rm -rf $1"/"$file 
                        else
                                echo "deleting file: " $1"/"$file
                                rm -rf $1"/"$file 
                        fi 
                done  
     else
      echo "clearFile cannot be called!!!, the dir name is: "$1
     fi
}  
  
runPath=$(cd `dirname $0`;pwd)
echo "the script is located in directory :" $runPath
clearFile  $1  
將該shell指令碼複製到centos中指定目錄之後,使用如下命令賦予可執行許可權:
chmod 777 clearFile.sh
然後就可以愉快使用了,假如要刪除logs目錄下的所有日誌檔案。執行如下命令即可:
./clearFile.sh logs
不過,為了安全起見,該指令碼允許清空內容的資料夾名字只能是logs或者log,也即只對如下兩個呼叫生效。有需要的可以自己稍作修改。
./clearFile.sh logs   或者  ./clearFile.sh log