文件操作
- 为文件(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
重命名