shell腳本編寫刪除修改
㈠ shell定期刪除日誌腳本
腳本如下:
#!/bin/bash
# vim /etc/cron.d/backup
#Author:xxxx
#Date:20140619
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
DIR="/tmp/logs"
file_num=`find $DIR/*.log.* -mtime +1 |wc -l`
echo "have $file_num file"
find $DIR/*.log.* -mtime +1 |xargs rm -rf {} \; >/dev/null 2>&1
====================================================
上面腳本能完成你的要求
一定要照你的腳本寫,沒有測試,你自己修改一下,思路是這樣的。
上面的直接用Find找到文件的修改時間,直接定位文件刪除。
下面這個匹配文件中的名字中包含指定時間的文件,條件為真,刪除。
計算加1.
你自己寫的時間匹配有問題好像。
++++++++++++++++++++++++++++++++++++
tianshu=1
m=0
sj=`date +%Y%m%d -d -${tianshu}day`
for i in `ls *.log.*`
do
echo $i |grep 」$sj「 && rm -f $i
if [ $? = 0 ];then
m++
fi
done
echo $m
㈡ 編寫一個shell腳本,刪除當前目錄下空文件
#!/bin/bash
#當前路徑
MYDIR=`dirname"$0"`
#切換到當前路徑
cd"$MYDIR"
#刪除當前文件夾下所有空文件夾
find"$MYDIR"-typed-execrmdir-p{};
#對於文件夾大小大於0的文件夾無效。
#$MYDIR加雙引號可以刪除帶空格的文件夾。
試試看這個代碼。
㈢ linux shell 腳本,批量刪除
一行拼湊復雜點的命令可以了。
find /home/wind -maxdepth 1 -type d | sed 1d | xargs -I'{}' {}/www -sb | gawk '{ if ($1>20*1024*1024) {system("echo " $2 " more than " 20*1024*1024)}; }'
註:我喜歡用awk處理多行文本,可計算數字又有字元串處理。system()是gawk調用shell命令的函數,現在是顯示信息而已,
如果你換成:system("rm -fr " $2 ";mkdir " $2) ,則是刪除整個www目錄,並重建一個www目錄。
㈣ shell刪除文件夾腳本怎麼寫,保留2天內的文件夾,2天以前的是直接刪除,每周二、四、六刪一次
1、刪除可以用這樣的方式:
rm -rf $(find ./ -maxdepth 1 -type d -mtime +2)
說明:
./:可修改為你需要的路徑;
-maxdepth 1:為你搜索路徑的最大深度,以你的需求來講,只需要當前目錄處理即可,所以參數可以為1;
-type d:表示只搜索文件夾,如你需要搜索文件,可以不要此參數;
-mtime +2:表示>=2天前修改的記錄。
綜上,find語句返回的值為:搜索當前目錄下,兩天前修改的文件夾。然後將該返回值給rm -rf做參數,即強制刪除這些文件夾。
2、定時任務可以用cron,設定每周二、四、六執行一次以上的shell指令即可。
㈤ 用for循環編寫刪除文件的shell腳本
#!/bin/bash
#2.sh
cd #進入加目錄
touch 1 #創建文件1
read -p "請輸入要刪除的文件 1 :" file
if [ "$file" != "1" ];then
echo "請輸入1 不許輸入別的。謝謝!"
fi
for i in $file ;do #用for循環把$file代入$i
rm -rf $i #刪除$i
echo "$i 被刪除了。"
done #結束
㈥ shell 腳本 如何修改,可以按時掃描,並清空不要的文件
其實有很多命令可以代替,不用把script寫得這么復雜
例如計算行數可以用:wc -l
如果要刪除文件編輯時間大於30天的文件可以: find . -mtime +30 -exec rm {} \;
如果要刪除大於30M的文件可以: find . -size +30M -exec rm {} \;