zoukankan      html  css  js  c++  java
  • [Linux] Shell 脚本实例(超实用)

    文件操作

    • 为文件(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

  • 相关阅读:
    leetcode 414
    Leetcode 495
    Leetcode 485题
    Python 24点(2)
    python 24点
    我的第一次作业
    Django
    multiprocessing模块
    遍历文档树
    shutil模块
  • 原文地址:https://www.cnblogs.com/cxc1357/p/13399789.html
Copyright © 2011-2022 走看看