提取多个 tar.gz 文件并将子目录中的文件复制到公共文件夹中

提取多个 tar.gz 文件并将子目录中的文件复制到公共文件夹中

我在 1 个文件夹中有多个 tar.gz 文件,每个 tar.gz 文件中都有 2 个名为“Cscf & Cscf2”的文件夹,每个文件夹又有 1 个 xml 文件。

所以我的要求是将 Cscf 文件夹中的 xml 文件复制到 1 个公共文件夹(ABC),将 Cscf2 文件夹中的 xml 文件复制到 1 个公共文件夹(XYZ)

答案1

我认为有更好的解决方案。但也许在出现更好的解决方案之前,它会对你有所帮助,你可以接受。在包含你的档案的文件夹中运行它。

for arc in ./*.tar.gz; 
  do 
    tar xvf $arc && \
    mv $(echo $arc|sed 's/.tar.gz//')/Cscf/*.xml abc && \
    mv $(echo $arc|sed 's/.tar.gz//')/Cscf2/*.xml xyz  && \
    rm -r $(echo $arc|sed 's/.tar.gz//'); 
  done
  • arc循环中的变量for将保留每个.tar.gz档案名称
  • tar xvf $arc将提取当前档案
  • mv $(echo $arc|sed 's/.tar.gz//')/Cscf/*.xml abc.xml文件从解压的档案Cscf文件夹移动到abc文件夹
  • rm -r $(echo $arc|sed 's/.tar.gz//')将删除解压的文件夹

相关内容