Linux常用的shell脚本

1. 备份最后一天所有修改的文件

BACKUPFILE=backup-$(date +%m-%d-%Y) #在备份文件中嵌入时间
##如果没有 1 参 数 传 入 进 来 , 就 是 用 变 量 1参数传入进来,就是用变量 1,{BACKUPFILE}
archive= ( 1 : − (1:- (1:BACKUPFILE)
#如果在命令行中没有指定备份文件的文件名,你么将默认使用"back-MM-DD-YYYY.tar.gz"
find . -mtime -1 -type f -exec tar zxvf “${archive}.tar.gz” ‘{}’ ;

2. 列出系统上的所有用户

##将/etc/passwd中的内容赋予变量PASSWORD
PASSWORD_FILE=/etc/passwd
n=1
##awk表示将/etc/passwd中的文件以":“分割,并循环输出第一列的内容
for name in $(awk 'BEGIN{FS=”:"}{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' < "PASSWORD_FILE")
#域分隔符:
#打印第一个域
#从/etc/passwd文件中取得输入
do
echo “USER #$n = ${name}”
let “n += 1”
done

3. 找出当前目录下,日期为五天前,文件大小大于5G的文件并删除掉.

##find ./表示返现当前目录下,-mtime -5表示五天前的时间,-name “"表示所有文件
##–size +5G 表示文件大小大于5G -exec rm -rf {} \表示执行命令,移除所有文件
find ./ -mtime -5 -name "
” -size +5G -exec rm -rf {} \

4. 将当前目录下,前缀A_的文件改成前缀为B_的文件

##循环遍历当前目录下前缀为A_的文件,*表示通配符
for var in ls A_*
do
##将遍历到的文件名,以’'进行分割,取得分隔后的字符串的第二个参数,然后在左边加上’B’字符
##用mv将原先的文件重命名为设置后的文件名
mv ${var} echo ${var} |awk -F '_' '{print "B_" $2}'
done

5. 过滤当前主机的网卡和IP地址信息

##首先过滤网卡信息,|表示通道,将上次的输出当作下一次的输入,grep表示过滤出有state字段的一行值
##awk表示默认以空格进行分割,然后取其中第二列参数
##sed表示将:替换为空,s表示不区分大小写,g表示全部替换
NIC=ip addr | grep "state" | awk '{ print $2 }' | sed 's/://g'
for i in $NIC ##循环遍历变量NIC中的值,并打印出来
do
IP=ip addr show ${i} | grep "inet " | awk '{ print $2 }'
echo “Network: i − − − − − − − I P : {i} ------- IP: iIP:{IP}”
done

6. 循环替换当前文件夹下的文件内容

##当前目录下以.md文件结尾的文件中的monokai字符替换为 kuroir
for i in find ./ -name "*.md"
do
sed -i ‘s/monokai/kuroir/g’ $i
done

7. 替换修改目录下乱码的文件名

yum install convmv #安装转换文字的软件包
#!/bin/bash
function scandir() {
local cur_dir parent_dir workdir
workdir=$1
cd ${workdir}
if [ w o r k d i r = " / " ] t h e n c u r d i r = " " e l s e c u r d i r = {workdir} = "/" ] then cur_dir="" else cur_dir= workdir="/"]thencurdir=""elsecurdir=(pwd)
fi
for dirlist in $(ls ${cur_dir})
do
if test -d ${dirlist};then
cd ${dirlist}
scandir c u r d i r / {cur_dir}/ curdir/{dirlist}
cd …
else
echo c u r d i r / {cur_dir}/ curdir/{dirlist}
convmv -f GBK -t UTF-8 --notest c u r d i r / {cur_dir}/ curdir/{dirlist}
fi
done
}
if test -d $1
then
scandir $1
elif test -f $1
then
echo “you input a file but not a directory,pls reinput and try again”
exit 1
else
echo “the Directory isn’t exist which you input,pls input a new one!!”
exit 1
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值