1、批量删掉文件名后缀的简单方法
name=ls
#定义列表
for i in $name #取值
do
mv $i ${i%.} #删除内容(%)后的.
done
下面是网上的原文
要思路简单易于理解的话,可以这样:
1234 for file in find . -name "*.txt"
do mv $file ${file%.}done
${file%.} 是bash中字符串处理“掐头去尾法”中的去尾法。
2、循环中单个过程引用多变量
A=(cat /root/dev.txt
)
B=(cat /root/mount.txt
)
for ((i=0;i<3;i++))
do
echo ${A[$i]} ${B[$i]}
done
3、定义整数列表
#!/bin/bash
for i in {1..10} #1
#for((i=1;i<=10;i++)) #2
#for i in seq 1 10
#3
do
echo $i
done
4、在指定行的前/后插入指定内容
5、匹配行添加注释
描述:sed -i '/匹配条件1/s/位置:开头^结尾$或者再次匹配/替换内容或者说要添加的内容/' 文本文件
sed -i '1,4 s/^/#/' test.sh #指定1-4行行首添加#
sed -i '1,4 s/^#//' test.sh #指定1-4行删除行首内容#
sed -i '/grep/s/^/#/' test.sh #匹配关键字在其行首添加#
sed -i '/grep/s/$/#/' test.sh #匹配关键字在其行尾添加#
sed -i '/dcits/s/proxy/tianle/' test.sh #匹配dcits关键字,再将匹配到的行中的proxy替换成tianle
sed -i '/grep/s/^#//' test.sh #去掉匹配行的行首#注释
sed -i '5,26 {/^#/d}' login2.py #匹配5-26行中开头为#的行进行删除操作
6、指定列比对后进行打印(此例子有问题)
for filename in ls -hl |grep -v ^d|awk '$5 > 10k {print $9}'
#查找当前目录中文件大于10k的
do
cp $filename /tmp
done