在/backup下创建10个.txt的文件,找到/backup目录下所有后缀名为.txt的文件
1)批量修改txt为txt.bak
2)把所有的.bak文件打包压缩为123.tar.gz
3)批量还原文件的名字,及把增加的.bak再删除
[root@shell shell]# vim mv.sh
#!/bin/bash
Dir=/backup
#判断目录是否存在,不存在则创建
[ -d $Dir ] || mkdir -p $Dir
#创建10个文件
touch $Dir/{
1..10}.txt
#找到这些文件,进行批量修改名称
find $Dir -type f -name "*.txt" >$Dir/txt.log
#批量修改文件名
sed -r 's#(.*)#mv \1 \1.bak#g' $Dir/txt.log |bash
#打包压缩为123.tar.gz
tar czf $Dir/123.tar.gz $Dir/*.bak
#批量进行还原文件名
find $Dir -type f -name "*.bak" >$Dir/bak.log
#还原
sed -r 's#(.*).bak#mv \1.bak \1#g' $Dir/bak.log |bash
for循环方式修改
[root@shell shell]# vim for_name.sh
#!/bin/bash
Dir=/backup
#判断目录是否存在,不存在则创建
[ -d $Dir ] || mkdir -p $Dir
#创建10个文件
touch $Dir/{
1..10}.txt
#批量修改文件名
find $Dir -type f -name "*.txt" >$Dir/txt.log
#使用for循环进行修改
for i in $(cat $Dir/txt.log)
do
mv $i $i.bak
done
#打包压缩为123.tar.gz
tar czf $Dir/123.tar.gz $Dir/*.bak
#查找文件
find $Dir -type f -name "*.bak" >$Dir/bak.log
#批量还原
for j in $(cat $Dir/bak.log)
do
mv $j ${
j%.*}
done
取出下列字符串长度小于3的单词,I am qiuzengjia teacher I am 18。
[root@shell shell]# vim for-1.sh
#!/bin/bash
#定义变量
length='I am qiuzengjia teacher I am 18'
#使用for循环判断变量值长度,小于3则显示,否则不显示
for i in $length
do
[ ${
#i} -lt 3 ] && echo $i
done
[root@shell shell]# echo "I am qiuzengjia teacher I am 18" |xargs -n1 |awk '{ if ( length < 3 ) print }'
I
am
I
am
18
shell变量运算
加减乘除余方
整数运算
expr 值两边必须要有空格隔开
[root@shell shell]# expr 1 + 1
2
[root@shell shell]# num1=10
[root@shell shell]# num2=20
[root@shell shell]# expr $num1 + $num2
30
[root@shell shell]# expr $num1 - $num2
-10
[root@shell shell]# expr $num1 * $num2
expr: syntax error
[root@shell shell]# expr $num1 \* $num2
200
[root@shell shell]# expr $num1 / $num2
0
[root@shell shell]# expr $num2 / $num2
1
[root@shell shell]# expr $num2 % $num2
0
[root@shell shell]# expr $num1 % $num2
10
$(())
[root@shell shell]# echo $(( $num1 + $num2 ))
30
[root@shell shell]# echo $(( $num1 - $num2 ))
-10
[root@shell shell]# echo $(( $num1 * $num2 ))
200
$[]
[root@shell shell]# echo $[$num1 * $num2 ]
200
[root@shell shell]# echo $[$num1 / $num2 ]
0
[root@shell shell]# echo $[$num1 + $num2 ]
30
let ****
[root@shell shell]# a=1
[root@shell shell]# let a++
[root@shell shell]# echo $a
2
[root@shell shell]# let a++
[root@shell shell]# echo $a
3
[root@shell shell]# let a--
[root@shell shell]# echo $a