当前位置:首页 » 编程软件 » shell删除脚本

shell删除脚本

发布时间: 2022-08-08 04:03:06

A. 题目:怎么用SHELL写的一个自动删除文件的脚本

rm_file()
{
find / -type -f -mtime +7 -exec rm {} \;
}

然后把这个函数放入用户的.bash_profile中去,就可以开机自动删除一个星期前创建或修改的文件了

如果你是root ,那么你的.bash_profile文件就在根目录下中,如果你是普通用户,那么这个文件,就在$HOME中
find命令在“/”下查找普通文件,修改时间在7日以内的文件,-exec是来执行命令,rm的,后面的{} \;是-exec执行命令时必须加上的东西

B. 删除一个文件夹中的文件中含有制定字符的shell脚本

sed '/\/\*/{s#/\*.*\*/##g;t;:1;N;/\*\//!b1;s#/\*.*\*\/##}' file
C语言的注释格式为:/*...*/,以此为处理参考:
/\/\*/
匹配正则表达式,匹配内容为/*,/和*都需要\来转义。
匹配后执行:
s#/\*.*\*/##g;t;
将/*...*/替换为空,如果替换成功,则t(在s替换成功后,转到命令脚本结束,读取下一行信息)。
#号为替换分隔符,结尾的g表示全局替换,即避免有/*...*/ /*...*/在同一行出现。
这里面的/不需要转义(转义不转义都可以正确识别),但是*仍然需要\转义。

若匹配/*,但替换失败(即/*和*/没在同一行):
:1
标识一个位置,位置名称为1。
N;
将这一行保存至模式空间,并读取下一行。
/\*\//!b1;
若不匹配*/,则命令脚本从:1处开始执行。(之前标识的位置1)
!为/\*\//匹配的否定,b1,转到:1处。
此处相当于循环,不匹配就一直将文件读下去,直到匹配*/,此时模式空间的内容大致为:
/* ...
...
...
... */
(若直到文件结束,仍没有*/出现,在结束后,输出模式空间的所有内容,即从/*开始,到结束)
匹配*/,不进行b1的操作,进行下一步:
s#/\*.*\*\/##
同上替换,将满足/*...*/的内容替换为空。
结束。

替换会产生空行,如果想删除空行,再追加 | sed '/^$/d'

C. 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指令即可。

D. 帮忙写一个SHELL脚本,linux定时删除用的

如果删除/xxx/xxxxxx/xxx/下 3天以前的 所有内容:

find/xxx/xxxxx/xxx/*-mtime+3-execrm-rf{};

如果删除/xxx/xxxxxx/xxx/下 3天以前的 所有文件(不包含目录):

find/xxx/xxxxx/xxx/*-typef-mtime+3-execrm-rf{};

如果不删除MSS目录 只删除MSS内的所有 3天以前的文件:

find/xxx/xxxxx/xxx/MSS[0-9]*/*-typef-mtime+3-execrm-rf{};

如果不删除MSS目录 但MSS下所有 3天以前的目录及文件全删除:

find/xxx/xxxxx/xxx/MSS[0-9]*/*-mtime+3-execrm-rf{};

E. 用shell脚本写删除文件的命令

在哪个目录下即可在在该目录下执行
find -name "rpm -ql*"| xargs -I {} rm -rf {}

当然也可以加上目录
find /目录 -name "rpm -ql*"| xargs -I {} rm -rf {}

F. linux shell 脚本,批量删除

#!/bin/bash
#此小脚本为方便需要大批量删除具有相通特征的用户(如xuanfei1
xuanfei2
xuanfei3)
read
-p
"请输入你想要删除的用户并指定范围(如:xuanfei
1
100):"
a
b
c
let
d=$c-$b+1
for((i=1;i<=$d;i++))
do
userdel
$a$b
&&
echo
"已经成功删除$a$b用户"
#想彻底删除用户所有的资料可添加下条明令
#rm
-rf
/home/$a$b
let
b=b+1
done

G. 编写一个shell脚本,删除当前目录下空文件

#!/bin/bash
#当前路径
MYDIR=`dirname"$0"`
#切换到当前路径
cd"$MYDIR"
#删除当前文件夹下所有空文件夹
find"$MYDIR"-typed-execrmdir-p{};

#对于文件夹大小大于0的文件夹无效。
#$MYDIR加双引号可以删除带空格的文件夹。

试试看这个代码。

H. 用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
#结束

I. shell脚本删除文件

你说保留两天的文件,你周二,周四删除。周二到周四也就两天。

J. 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

热点内容
vs编译找不到指定项目文件 发布:2025-02-08 12:36:54 浏览:242
怎样用windows服务器搭建网站 发布:2025-02-08 12:27:38 浏览:532
android获取音乐 发布:2025-02-08 12:26:05 浏览:962
存储的数据可以复制吗 发布:2025-02-08 12:20:22 浏览:852
scraino编程 发布:2025-02-08 11:59:41 浏览:265
我的世界服务器进不去该怎么办 发布:2025-02-08 11:47:41 浏览:236
linux的telnet 发布:2025-02-08 11:47:36 浏览:288
压缩袋打折 发布:2025-02-08 11:46:02 浏览:259
c语言结构体题目 发布:2025-02-08 11:46:01 浏览:339
如何svn限制一些外网不能访问 发布:2025-02-08 11:46:00 浏览:992