用例1
用for循环在家目录下创建aaa1-aaa10,然后在aaa1-aaa10创建bbb1-bbb10的目录
#!/bin/bash
for k in $( seq 1 10 )
do
mkdir /home/kuangl/aaa${k}
cd /home/kuangl/aaa${k}
for l in $( seq 1 10 )
do
mkdir bbb${l}
cd /home/kuangl/aaa${k}
done
cd ..
done
说明:
行2,seq 用于产生从某个数到另外一个数之间的所有整数。
行4,在家目录下创建文件夹。
行6,在使用一个for循环创建文件夹
用例2
列出var目录下各子目录占用磁盘空间的大小。
#!/bin/bash
DIR=”/var”
cd $DIR
for k in $(ls $DIR)
do
[ -d $k ] && du -sh $k
done
说明:
行4,对/var目录中每一个文件,进行for循环处理。
行6,如果/var下的文件是目录,则使用du -sh计算该目录占用磁盘空间的大小。
用例1
while循环,经典的用法是搭配转向输入,读取文件的内容,做法如下:
#!/bin/bash
while read kuangl
do
echo ${kuangl}
done < /home/kuangl/scripts/testfile
说明:
行2,使用read有标准输入读取数据,放入变量kuangl中,如果读到的数据非空,就进入循环。
行4,把改行数据显示出来
行5,将/home/kuangl/scripts/testfile的内容转向输入将给read读取。
用例2:
#!/bin/bash
declare -i i=1
declare -i sum=0
while ((i<=10))
do
let sum+=i
let ++i
done
echo $sum
说明:
行2-3,声明i和sum为整数型
行4,如果条件测试:只要i值小于或者等于10,就执行循环。
行6,sum+=i和sum=sum+i是一样的,sum累加上i。
行7,i的值递增1,此行是改变条件测试的命令,一旦i大于10,可终止循环。
行8,遇到done,回到行6去执行条件测试
行9,显示sum的值为55
用例1:
#!/bin/bash
declare -i i=10
declare -i sum=0
until ((i>10))
do
let sum+=i
let ++i
done
echo $sum
说明:
行2-3,声明i和sum为整数型
行4,如果条件测试:只要i值未超过10,就进入循环。
行6,sum+=i和sum=sum+i是一样的,sum累加上i。
行7,i的值递增1,此行是改变条件测试的命令,一旦i大于10,可终止循环。
行8,遇到done,回到行6去执行条件测试
行9,显示sum的值为10
1 #! /bin/bash
2
3 declare -i i=1
4
5 date +%r
6 while(true)
7 do
8 let ++i
9 if [ “$i” = “10” ];then
10 echo $i
11 break
12 fi
13 sleep 3
14 date +%r
15 echo $i
16 php /var/www/test/ApplogCommand.php >>/var/www/test/test.log
17 done
18 echo $i
02、linux下对符合条件的文件大小做汇总统计的简单命令
(1)统计当前目录下的 txt 文件
du -c -h txt
(2)统计当前目录下的 txt 文件, 并求出总大小
du txt |awk ‘BEGIN{count=0;size=0;} \
{count = count + 1; size = size + $1/1024;} \
END{print “Total count “ count; \
print “Total size “ size/1024 “ GB” ; \
print “Avg size “ size / count “MB”}’
(3)统计当前目录下及其子目录中的 +1000000k 文件
find . -size +1000000k -exec ls -l {} \; |awk ‘BEGIN{count=0;size=0;} \
{count = count + 1; size = size + $5/1024/1024;} \
END{print “Total count “ count; \
print “Total Size “ size/1024 “ GB” ; \
print “Avg Size “ size / count “MB”; \
print “-“}’
(4)统计当前目录下及其子目录中的 .fastq
find . -name ‘.fastq’ -exec ls -l {} \; |awk ‘BEGIN{count=0;size=0;} \
{count = count + 1; size = size + $5/1024/1024;} \
END{print “Total count “ count; \
print “Total Size “ size/1024 “ GB” ; \
print “Avg Size “ size / count “MB”; \
print “-“}’
(5)统计当前目录下及其子目录中的之前2天的文件
find . -mtime -2 -exec ls -l {} \; |awk ‘BEGIN{count=0;size=0;} \
{count = count + 1; size = size + $5/1024/1024;} \
END{print “Total count “ count; \
print “Total Size “ size/1024 “ GB” ; \
print “Avg Size “ size / count “MB”; \
print “-“}’
03、统计图片
//webp图统计
find ./ -name ‘.webp’ -type f -exec ls -l {} \;|awk ‘BEGIN{count=0;size=0;} {count = count + 1; size = size + $5/1024/1024;} END{print “Total count “ count; print “Total Size “ size/1024 “ GB” ; print “Avg Size “ size / count “MB”; print “-“}’
//不是webp图片统计
find ./ ! -name ‘.webp’ -type f -exec ls -l {} \;|awk ‘BEGIN{count=0;size=0;} {count = count + 1; size = size + $5/1024/1024;} END{print “Total count “ count; print “Total Size “ size/1024 “ GB” ; print “Avg Size “ size / count “MB”; print “-“}’
//全部统计
find ./ -type f -exec ls -l {} \;|awk ‘BEGIN{count=0;size=0;} {count = count + 1; size = size + $5/1024/1024;} END{print “Total count “ count; print “Total Size “ size/1024 “ GB” ; print “Avg Size “ size / count “MB”; print “-“}’
//文件总数
find ./ -type f -exec ls -l {} \;|wc -l