标签搜索

shell相关的批量操作

冰封一夏
2021-09-28 23:56:28 / 23 阅读 / 正在检测是否收录...

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 &gt; 10k {print $9}' #查找当前目录中文件大于10k的

do

cp $filename /tmp

done










本文转自 天乐 51CTO博客,原文链接:http://blog.51cto.com/tianlegg/2054113,如需转载请自行联系原作者

4

评论

博主关闭了所有页面的评论