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 {} \;