一、批量重命名

1.1 添加前缀 / 修改后缀
[localhost@user home]$ ls
1.txt 2.txt 3.txt 4.txt 5.txt

[localhost@user home]$ for i in `ls`; do mv -f $i `echo "text_"$i`; done # 直接修改
[localhost@user othe]$ for i in `ls`; do cp -f $i `echo "text_"$i`; done # 复制并添加前缀
[localhost@user home]$ ls
text_1.txt text_2.txt text_3.txt text_4.txt text_5.txt


[localhost@user home]$ rename 's/\.txt/\.csv/' *
[localhost@user home]$ ls
1.1 修改文件名某个字段
# 文件 hello_world.c 改为 bay_world.c
rename 's/hello/bay/' files #修改单个
find -name *.c | rename 's/hello/bay/'

二、修改配置文件

Linux shell 执行修改配置文件中的内容
在开发的过程中可能Linux环境不一致需要适应本地环境的HOME目录,可以通过脚本来修改配置文件内容,写一个test.sh的脚本

示例:
如下config.txt文件内容:

[server]
listening_port=8000
proxy_url=
save_path=y
aaa_text = this line is bad
#bbb_text = this line is good

[recognize]
url=http://api.sss.com/data/invoice_query
user_code=123jaduqhejrq124wqd
auth_code=123jaduqhejrq124wqd
sed 注释与反注释

​sed 's/^aaa/#&/' config.txt​​​   # 用sed在aaa前加​​#​​​注释,&的意思是匹配任意字符
​​​sed 's/^#bbb/bbb/' config.txt​

sed 内容添加与替换
sed -i -e 's|proxy_url=|proxy_url=http://10.22.123.56:5000|' config.txt
sed -i -e 's|save_path=y|save_path=n|' config.txt
sed -i -e 's|user_code=123jaduqhejrq124wqd|user_code=123jaduqhejrq124qqq|' config.txt
sed -i -e 's|auth_code=123jaduqhejrq124wqd|auth_code=123jaduqhejrq124qqq|'
在脚本里写入以下命令:
sed -i "s#ftfts_com_serverpa_path=.*#ftfts_com_serverpa_path= $HOME#g" test.properties

该命令的基本语法如下:
sed -i "s/要替换的内容/替换后的内容/g" 文件名

使用`#`代替/能够适应替换内容中含有/的内容,不需要转译.不然还要使用//转译!.*是匹配所有内容!

三、常用命令

当前路径,输出日期格式,拼接文件名,正则获取最新的文件夹/文件

current="/home/xxx/"
echo "当前路径: $current"
cd $current

date_name=`date +%Y_%m_%d_%H_%m_%S`

dir_name="filenme_${date_name}"

laster_dir=`ls -lt|grep "filename_2020_"|awk '{print $9}'|awk 'NR==1'`
echo "刚才创建的文件夹: $laster_dir"