【问题标题】:Extracting specific file types from all tar files from specific folder从特定文件夹中的所有 tar 文件中提取特定文件类型
【发布时间】:2016-10-02 02:41:51
【问题描述】:

我需要接受两个参数的 shell 脚本。 第一个是特定文件夹的路径,第二个是 int 值(1 或 2)。

如果第二个参数是 1,那么我必须遍历上述文件夹中的所有 tar 文件,并将可执行文件从第一个参数提取到路径内的特定文件夹中。在这种情况下,该文件夹的名称是“解压”。

如果第二个参数是 2,那么我必须从第一个参数给出的文件夹中的所有 tar 文件中提取所有 *.txt 文件。

我正在尝试这样的事情,但不知道如何捕获每个 tar 文件并提取这两种文件类型之一。

#!/bin/bash

cd $1
if [$2 –eq 1 ]
then
for f in *.tar; do
tar –xv –f "$f" –-wildcards EXECUTABLE FILES -C ./unpacked
done
fi

if [$2 –eq 2 ]
then
for f in *.tar; do
tar –xv –f "$f" –-wildcards "*.txt" -C ./unpacked
done
fi

【问题讨论】:

    标签: linux shell


    【解决方案1】:

    [MEMBER...] 参数必须在最后。

    #!/bin/bash
    
    cd $1
    if [$2 –eq 1 ]
    then
    for f in *.tar; do
    tar –xv –f "$f" –-wildcards -C ./unpacked EXECUTABLE FILES
    done
    fi
    
    if [$2 –eq 2 ]
    then
    for f in *.tar; do
    tar –xv –f "$f" –-wildcards -C ./unpacked "*.txt"
    done
    fi
    

    【讨论】:

    • 它适用于 txt 文件但对于可执行文件我必须以某种方式选择它并且不知道如何
    • 除非您可以通过名称识别可执行文件,否则您不能只解压缩可执行文件。您必须执行以下操作之一: 1. 将其全部解压缩并识别之后的每个文件 2. 编写一个程序,该程序可以理解 tar 文件并可以选择性地挑选出可执行文件
    • 实际上第二个选项是我需要的,但不知道该怎么做
    【解决方案2】:

    在终端中执行从 tar 文件中提取特定文件:

    $ tar -zxvf TARNAME.tar.gz PATH/FILNAME
    

    【讨论】:

      猜你喜欢
      • 2016-03-05
      • 2011-06-04
      • 1970-01-01
      • 2014-09-10
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多