[Linux] Shell 脚本实例(超实用)
阅读原文时间:2023年07月08日阅读:2

文件操作

  • 为文件(test.sh)增加执行权限

chmod +x test.sh

  • 列出当前文件夹下所有文件(每行输出一个)

1 #!/bin/bash
2 dir=`ls ./`
3 for i in $dir
4 do
5 echo $i
6 done

  • 列出当前文件夹下所有 txt 文件(每行输出一个)

    1 #!/bin/bash
    2 dir=`ls ./`
    3 num=0;
    4 for i in $dir
    5 do
    6 file=$i
    7 if [ ${file##*.} = txt ];then
    8 echo $file
    9 ((num++));
    10 fi
    11 done
    12 echo $num

  • 读取文件的前100行,另存为另一个文件(b.txt)

head -100 a.txt > b.txt

  • 将当前文件夹下所有以ods开头的文件取前三行,并重命名为“原文件名_3”形式

    1 #!/bin/bash
    2 dir=`ls ./`
    3 num=0;
    4 for i in $dir
    5 do
    6 file=$i
    7 if [ ${file%%_*} = ods ];then
    8 head -3 $file > ${file%.*}_3.txt
    9 ((num++));
    10 fi
    11 done
    12 echo $num

  • 删除当前目录下所有文件名中有“100”的文件

find . -name '*100*' -exec rm -rf {} \;  

  或:

find . -name '*100*'|xargs rm -rf;

  或:(需要输入y确定)

rm *100*;

  • 删除当前目录下不以100结尾的文件

rm -f `ls ./ | egrep -v "(1$)"`

  -v:取反,$:结尾

  • 删除当前目录下以ods开头,且不以1000.txt结尾的文件

rm -f `ls ./|egrep "(^ods)"|egrep -v "(1000.txt$)"`

  • 将当前目录文件中的‘cat’改为'dog'

sed -i "s/cat/dog/g" `grep cat -rl ./`

  • 将当前目录文件中的“/kkb”替换为“/root/kkb”

sed -i "s/\/kkb/\/root\/kkb/g" `grep /kkb -rl ./`

  替换内容中有 / 时,需在 / 前加 \ 转义,否则会识别错误

  • 将当前目录文件中的变量var1替换为变量var2

sed -i "s/$var1/$var2/g" `grep $var1 -rl ./`

  注意要用双引号,否则无法识别$

  变量中有 / 时,处理方法见上一条

  • 将当前目录下所有 .txt 文件改为 .pdf 文件

rename .txt .pdf *

  • 将当前目录下以所有形如 xx_1000.txt 的文件重命名,去掉1000

rename _1000.txt .txt *

  • 将当前目录下所有 .txt 文件后缀去掉

find -name "*.txt" |for i in *;do mv $i `echo $i |sed 's/\.txt//g'`;done

  或:

find -name "*.txt" |awk -F'.' '{print $1} |xargs mv {}.txt {}

参考

https://www.cnblogs.com/kex1n/p/7302528.html

https://www.cnblogs.com/chengJAVA/p/5210909.html

sed

https://www.jb51.net/article/124604.htm

http://docs.linuxtone.org/ebooks/C&CPP/c/ch32s03.html

反引号

https://www.cnblogs.com/wangshaowei/p/9142661.html

重命名

https://foofish.net/linux-rename.html