shell脚本删除文件
① shell中怎么删除文件中指定行的
1、删除包含指定关键字的行:
sed -i '/hello/d' test_temp
[root@host]$ cat test_temp
world
123
4566
889
2、删除贺态历指定行号的行
sed -i '闭袜2d' test_temp
[root@host]$ cat test_temp
world
4566
889
3、sed -i '1d' a.txt删首行
4、sed -i '$d' b.txt删尾行
5、sed -i 's/[ ]*//g' c.txt删空格
6、sed -i '/^$/d' d.txt删空行
7、sed -i ‘/love/d’ a.txt删包含string的行。
(1)shell脚本删除文件扩展阅读:
shell 命令
常用命令:
cat 文件名 输出文件内容到基本输出(屏幕 or 加>fileName 到另一个文件)
cb 格式化源代码
chmod //change mode,改变文件的权限
cp
date 当前的时间和日期
echo $abc 在变量赋值之后,只需在变量前面加一个$去引用.
lint语禅搜法检查程序
ls dir
man help
more type
查看磁盘空间状况
ps 查看当前进程状况
who 你的用户名和终端类型
定义变量 name=abc? (bash/pdksh) || set name = abc (tcsh)
mkdir 创建目录
rmdir 删除目录
cd 进入目录
rm 删除文件
more 显示文件
echo 显示指定文本
mv 改文件名 /移动文件
pwd 显示目录路径命令
② shell脚本 怎么删除文件夹中的文件
vim rm.sh
#!/bin/bash
find . -type f -exec rm {} \;
会将当前文件夹中的文件全部删除。请谨慎操作!
③ 用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脚本删除30天之前日志
1、新建sh文件
删除30天以前的文件
#!/bin/bash
find /home/s/server/node1/logs/ -mtime +30 -print | xargs rm -rf
//注释让消源-mtime是距离上一次修改时间 -print是只显示文件 xargs是获取find查找的结果在通过rm命令删除
2、部署服务器
3、设置crontab定时任务
打开定时任务配置文件:crontab -e
定时调用test.sh:* * * * * /home/test.sh
保存退出:按键ESC,输入:wq
第一个* 一小时当中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一个月当中的第几天 1-31
第四个* 一年当中的第几月 1-12
第五个* 一周当中的星期几 0-7(0和7都代表周日)
* 代表任何时间,比如第一个 * 就代表一小时中的每分钟都执行
, 代表不连续的时间,比如 0 8,12,16 * * * 代表每天8,12,16点0分执行
- 代坦态表连续的时间范围,比如0 5 * * 1-6 代表在周一到周六凌晨5点0分执行
*/n 代表每个多久执行一次,比如*/10 * * * *代表每隔10分钟执行一次
例子:
45 22 * * *
在22点45分执行
0 17 * * 1
在每周1的17点0分执行
0 5 1,15 * *
在每月1号和15号的凌晨5点0分执行
40 4 * * 1-5
在每周一到周五的凌晨4点40分执行
*/10 4 * * *
在每天的凌晨4点,每隔10分钟执行一次
0 0 1,15 * 1
每月1号和15号,每周1的0点0分都会执行
注意:星期几和几号最好不要同时出现,他们的意义都是天,容易混淆
4、查看目前都有那些定时任务
crontab -l
5、备注:
定时任务需要crond服务的支持
1.启动方法 service crond restart
2.该服务默认是开机启动的
取消定时任务
1.全部取消 crontab -r
2.取消某个 crontab -e 配置文件,删除要取消的哪一行配置
若定时任务存在,编辑shell脚本后,不用做任何操作,不放心的话可以启动脚本看下是否报错 sh 脚本名桥空字
⑤ 编写一个shell脚本,删除当前目录下空文件
#!/bin/bash
#当前路径
MYDIR=`dirname"$0"`
#切换到当前路径
cd"$MYDIR"
#删除当前文件夹下所有空文件夹
find"$MYDIR"-typed-execrmdir-p{};
#对于文件夹大小大于0的文件夹无效。
#$MYDIR加双引号可以删除带空格的文件夹。
试试看这个代码。
⑥ shell脚本隔五分钟清理一次log文件
步骤一:编写自动清理日志文件搭慎shell脚本
# vim logAutoClean.sh
#!/bin/bash
log_path="/home/server/core/logs/app"
#目录存在,删除修改时间为7天前的文件
if [ -d "${log_path}" ]; then
echo start delete log 7 days ago...
find "${log_path}"/* -name '*.log.gz' -mtime +240 -exec rm -rf {} \;
echo end delete log ...
fi
# :wq! 保存并退出
步骤二:脚本文件授权(可执行权限)
# chmod +x logAutoClean.sh
测试一下:
# sh logAutoClean.sh
步骤三:创建crontab定时任务
# crontab –e
进入编辑页面(第一次进入会让你选择编辑器,这里我们选择3[vim.basic]就ok)。
设置每天凌晨1点执行(假定清除脚本在目录/home/server/core/logs/app下),编辑crontab,增加如下行:
00 01 * * * /home/server/core/logs/app/logAutoClean.sh
可先设置五分钟执行一次,测试下脚本
*/5 * * * * /home/server/core/logs/app/logAutoClean.sh
如果定时任务不生效,重启下crond服务
# service crond restart //重启服务
附录:crontab用法说明
crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。
每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以知洞敬直接创建或者直接修改。该crontab文件是通过crontab命令创建的
在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
每个域之间使用空格或者制表符分隔。格式如下:
格 式: minute hour day-of-month month-of-year day-of-week commands
合法值: 00-59 00-23 01-31 01-12 0-6 (0 is sunday)
除了数字颤桥还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。
crontab 命令
-l 在标准输出上显示当前的crontab。
-r 删除当前的crontab文件。
-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。
⑦ 用shell脚本中删除某文件夹下的七天之前生成的文件夹
oldDate=$(date-d"-7days""+%Y%m%d")。
cdyourFolder#这里写你的文件夹路径。
forfolderin$(ls-d*/)。
do。
[${folder%/*}-lt$oldDate]&&rm-rf$folder。
done。
(7)shell脚本删除文件扩展阅读:
打开文本编辑器(可以使用vi/vim命令来创建文件),新建一个文件test.sh,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意咐梁就好袭租,如果你用php写shell 脚本,扩展名就用php好拍简兆了。
输入一些代码,第一行一般是这样:
#!/bin/bashecho"HelloWorld!""#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。
echo命令用于向窗口输出文本。
⑧ 用shell脚本写删除文件的命令
在哪个目录下即可在在该目录下执行
find -name "rpm -ql*"| xargs -I {} rm -rf {}
当然也可以加上目录
find /目录 -name "rpm -ql*"| xargs -I {} rm -rf {}
⑨ shell脚本怎么在文件夹内删除最老的那个文件
1、如果很规律,比如说每天一个,或者每个月一个,你可以按时间删除,比如每天删除30天的
例如:
#!/bin/sh
find . -type f -mtime +30 -exec rm -rf {} \;
2、如果每天很多,只删除最老的一个,你可以按时间排序
ls -rt|head -1就是最老的那个
例如:
#!/bin/sh
ls -rt|head -1|xargs rm -rf