shell 命令之 批量改文件名
1. 如何写 shell
开头写#!/bin/bash,表示你的脚本由bash 来解释
之后就可以开始写命令行了,跟在终端输入命令一样,但可以一次写很复杂的命令,执行一些复杂的操作
#!/bin/bash
写完脚本,保存为sh后缀的文件aaa.sh 。另外,需要注意文件的格式应该为unix。
可以通过vi aaa.sh
打开文件,然后在底部模式下, 执行:set ff
查看,可以看到fileformat=dos
或者fileformat=unix
。
如果fileformat=unix, 那么 linux 系统可以执行;
如果fileformat=dos,那么需要进行格式修改,修改方法有几种:
方法一:
vim aaa.sh
进入aaa.sh后, 在底部模式下, 执行:set fileformat=unix
后执行:x
或者:wq
保存修改。
方法二:直接执行sed -i "s/\r//" aaa.sh
来转化。
方法三:直接执行dos2unix ./aaa.sh
来转化。(如果失败, 加个busybox就可以了)busybox dos2unix ./aaa.sh
运行脚本
直接在终端执行./aaa.sh
,就可以运行脚本了。
2. 实现批量文件解压改名的脚本
在文本编辑器中编写脚本,并保存为rename.sh
.
#!/bin/bash
cd Group2/
ls > ls.log
#把文件夹名保存到ls.log
##使用for 循环,
for i in $(cat ls.log);
do #循环开始标志
cd $i
#跳到文件夹
gzip -d *.gz
#解压所有压缩文件
mv merger.vcf ../`echo $i`.vcf
# 将文件夹名添加到vcf文件名中,并移动文件到上一层目录
cd ..
done #循环结束标志
rm -f ls.log
# 删除ls.log 文件
在终端执行./rename.sh