1、进入Linux命令环境

2、使用vim文本编辑器:vim <脚本文件名称>

linux 批量处理 zip linux批量压缩成gz_linux 批量处理 zip


3、进入vim文本编辑器后(关于vim编辑器的使用下文有注2),按照如下编辑:

#!/bin/bash
cd /data/limiao/develop_data/AISHELL-2/iOS/data/wav
# 首先把要解压的文件(tar.gz格式)放入一个文件中
ls *.tar.gz>ls.log
# 这样就会把所有的文件名保存到ls.log文件中
for i in $(cat ls.log)   # 这里可以使用Linux命令cat
do
   tar -zxf $i & > /dev/null   #  & > /dev/null语句的意思是让输出的东西不要显示出来
done

4、编辑好了之后切换到底线命令模式保存并退出编辑器
5、但是按照这样编写的脚本是不可执行的,查看文件权限(关于Linux文件的权限下文有注3),如下所示,还需要修改其权限使其可执行,

(base) [LiMiao@gpu08 wav]$ ls -l for_unzip.sh
-rw-rw-r-- 1 LiMiao LiMiao 309 May  9 15:16 for_unzip.sh

6、使用chmod命令修改文件权限:

(base) [LiMiao@gpu08 wav]$ chmod 755 for_unzip.sh

权限为755的脚本,则每个人都能执行,权限为700的 脚本,只有文件所有者能够执行。注意为了能够执行脚本,脚本必须是可读的。

执行chmod命令后,再查看文件权限如下所示,已经是可执行的了:

(base) [LiMiao@gpu08 wav]$ ls -l for_unzip.sh
-rwxr-xr-x 1 LiMiao LiMiao 309 May  9 15:16 for_unzip.sh

接下来就可以输入以下命令执行脚本文件:

(base) [LiMiao@gpu08 wav]$ ./for_unzip.sh

这样解压缩*.tar.gz文件就完成了:

linux 批量处理 zip linux批量压缩成gz_shell_02


注1:& > /dev/null语句的意思是让输出的东西不要显示出来

注2:vim相关命令

  • 命令模式
  1. i 切换到输入模式,以输入字符
  2. x 删除当前光标所在处的字符
  3. : 切换到底线命令模式,以在最底一行输入命令

编辑文本:启动vim,进入了命令模式,按下i,切换到输入模式。

  • 输入模式
    在命令模式下按下i就进入了输入模式。
    在输入模式中,可以使用以下按键:
  1. 字符按键以及Shift组合,输入字符
  2. ENTER,回车键,换行
  3. BACK SPACE,退格键,删除光标前一个字符
  4. DEL,删除键,删除光标后一个字符
  5. 方向键,在文本中移动光标
  6. HOME/END,移动光标到行首/行尾
  7. Page Up/Page Down,上/下翻页
  8. Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  9. ESC,退出输入模式,切换到命令模式
  • 底线命令模式
    在命令模式下按下:(英文冒号)就进入了底线命令模式。
    底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
    在底线命令模式中,基本的命令有(已经省略了冒号):
  1. q 退出程序
  2. w 保存文件
  3. q!不保存强制退出程序
  4. wq保存并退出程序

注3:Linux文件中的一些权限相关,以下图为例:

linux 批量处理 zip linux批量压缩成gz_命令模式_03

第一个-代表文件的类型:

  • 如果是一个普通文件为-
  • 如果是一个目录为d
  • 如果是一个软连接为l
  • 如果是一个字符设备为c
  • 如果是一个块文件为b

然后以三个符号为一组看,第一组rw-(因为没有执行权限,用x表示,故此处为-)表示文件所有者拥有的的权限:

  • 其中r表示该文件拥有读取的权限
  • w表示该文件拥有修改的权限
  • - 表示暂时还没有其他权限

第二组rw-表示该文件所在组的用户拥有的权限:

  • 同样r 表示拥有阅读的权限
  • w表示该文件拥有修改的权限
  • -表示暂时没有其他权限

第三组r--表示其他组的用户所拥有的权限:

  • 同样r 表示拥有阅读的权限
  • -表示暂时没有其他权限

接着看旁边的数字 1:

  • 如果这个文件类型是一个普通文件,则表示这个文件的硬链接
  • 如果这个文件类型是一个目录,则表示这个目录下的子目录个数

然后第一个LiMiao,表示这个文件的所有者LiMiao用户

第二个LiMiao,表示这个文件的所在组LiMiao

接着一串数字309

  • 表示这个文件的大小为309字节,如果是使用ls -hl指令查看的文件信息,会将大小换算为更高的单位
  • 如果此时的文件类型是一个目录,会显示"4096" ,linux中一切皆文件,所以目录其实也是一个特殊的文件,所以4096也代表这个目录的大小)

接着的日期,表示这个文件的最后修改日期为May 9 15:16

最后,表示这个文件的名称for_unzip.sh

rwx权限的详解
在前的文件信息中,可以看到rw的权限,实际上还有一个x权限,表示可执行权限,但是rwx这三个权限在不同的文件类型上,有着不一样的意义。

  • 如果是描述一个普通文件
    1、r 表示这个文件是可以读取,查看的
    2、w 表示这个文件是可以进行修改,但是不一定表示这个文件可以删除,因为还需要考虑这个文件所在的目录权限是否有能够删除的权限
    3、x 表示这个文件是可以执行的
  • 如果描述的是一个目录
    1、r 表示这个目录可以进行查看
    2、w 表示这个文件可以进行增加,删除或重命名
    3、x 表示可以进入这个目录

rwx权限还可以使用数字来表示为:r=4,w=2,x=1,所以rwx=4+2+1=7