Unix - 批处理文件解压缩具有特定名称的文件夹

时间:2015-08-07 19:59:14

标签: bash shell unix unzip

我需要一个unix的批处理脚本,但我不太了解它。

我有文件夹A和他的子文件夹

A\a1\b\c\file.zip
A\a2\b\c\otherFile.zip
A\a3\b\c\thirdFile.zip

每个zip文件都包含一个xml文件和一个文本文件

脚本必须做两件事:

  1. 解压缩名为' c'的所有文件夹中的所有zip文件。所有子 ' A'的文件夹;解压缩的文件应该保留在同一个文件夹中 这是拉链
  2. 必须重命名所有具有xml扩展名的解压缩文件
  3. 有人可以帮帮我吗?

    非常感谢

2 个答案:

答案 0 :(得分:0)

你可以这样做。

    #find the folder 'c' and unzip all zip files
    for folder in `find ./A -name c -type d`; do unzip $folder/data.zip -d $foler; done

    #find all .xml files and change the extension to .edefg
    for file in `find ./A -name *.xml -type f`; do  mv "$file" "${file%.xml}.edefg"; done

答案 1 :(得分:0)

你必须去所有目录。 会像

find A -type d -name c | while read dir; do
   cd ${dir} || continue
   unzip -u *.zip
   call_rename_xml_function
   cd - # not needed in bash where this code is performed in a subshell
done

编辑:在脚本被调用两次时添加了-u标志。