linux shell 脚本,批量删除 怎么使用linux里shell rm大量文件

linux\u7f16\u5199\u4e00\u4e2a\u6279\u91cf\u5220\u9664\u7528\u6237\u7684\u811a\u672c\uff0c\u6700\u597d\u6709\u6ce8\u91ca

#1\u3001\u5f7b\u5e95\u5220\u9664UID>=500\u7684\u7528\u6237\u7684\u4e3b\u76ee\u5f55\u53ca\u5176\u5b50\u6587\u4ef6\uff1b
#2\u3001\u5f7b\u5e95\u5220\u9664UID>=500\u7684\u7528\u6237\uff1b
#3\u3001\u5f7b\u5e95\u5220\u9664Shell\u811a\u672c\u81ea\u5df1\uff01
#!/bin/bash
uid=`awk -F ':' '{print $3}' /etc/passwd` ##\u83b7\u53d6\u6240\u6709\u7528\u6237\u7684uid
user=`awk -F ':' '{print $1}' /etc/passwd`##\u83b7\u53d6\u6240\u6709\u7528\u6237\u540d
array=($user) ##\u628a\u6240\u6709\u7528\u6237\u540d\u653e\u5230\u6570\u7ec4\u91cc\u9762\u53bb
j=0 ##\u6570\u7ec4\u7684\u4e0b\u6807,\u521d\u59cb\u5316\u4e3a0
for i in $uid;do
if [ $i -ge 500 ];then
userdel -r "${array[$j]}" ##\u5faa\u73af\u5220\u9664uid>=500\u7528\u6237\u7684\u4e3b\u76ee\u5f55\u53ca\u5176\u5b50\u6587\u4ef6\u548c\u7528\u6237
fi ##-r \u4f7f\u7528\u8005\u76ee\u5f55\u4e0b\u7684\u6863\u6848\u4e00\u5e76\u79fb\u9664\u3002\u5728\u5176\u4ed6\u4f4d\u7f6e\u4e0a\u7684\u6863\u6848 \u4e5f\u5c06\u4e00\u4e00\u627e\u51fa\u5e76\u5220\u9664\u3002
let j=j+1
done
rm `pwd`/$0 ##\u5220\u9664Shell\u811a\u672c\u81ea\u5df1

rm \u53ef\u4ee5\u5220\u9664\u6587\u4ef6\u4ea6\u53ef\u4ee5\u6279\u91cf\u5220\u9664\u6587\u4ef6\u5939\u4e0b\u6240\u6709\u6587\u4ef6
1\u3001rm -rf \u6587\u4ef6\u6216\u6587\u4ef6\u5939
2\u3001\u5176\u4e2d -r \u53c2\u6570\u6307\u7684\u662f\u9012\u5f52\u5220\u9664\u6587\u4ef6\u5939\u4e0b\u6240\u6709\u6587\u4ef6
-f\u6307\u7684\u662f\u5f3a\u5236\u5220\u9664\uff0c\u5982\u679c\u4e0d\u52a0-f\uff0c\u5219\u6ca1\u5220\u4e00\u4e2a\u6587\u4ef6\u90fd\u4f1a\u8be2\u95ee\u4f60\u662f\u5426\u786e\u8ba4\u5220\u9664\u3002

一行拼凑复杂点的命令可以了。

find /home/wind -maxdepth 1 -type d | sed 1d | xargs -I'{}' du {}/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目录。

#!/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


实验内容编写shell程序实现:创建100个名为user1~user100的用户;创建100个名#!/bin/bash #此小脚本为方便需要大批量删除具有相通特征的用户(如xuanfei

find /home/wind -maxdepth 1 -type d | sed 1d | xargs -I'{}' du {}/www -sb | gawk '{ if ($1>20*1024*1024) {system("echo " $2 " more than " 20*1024*1024)}; }'

man find

find /home/wind Find_the_Stuff |xargs /bin/rm -f

扩展阅读:linux bash脚本 ... linux编写shell脚本 ... 简单的shell脚本 ... windows shell脚本 ... java 执行shell脚本 ... 100个必会的shell脚本 ... linux shell脚本100例 ... linux停止shell脚本 ... linux测试shell脚本 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网