Wildcards
使 Linux 解壓縮命令只是從名稱包含給定字元串的目錄中提取文件
我有一個包含文件目錄層次結構的 zip 存檔。我想使用 Linux 解壓縮命令僅提取這些文件的子集,這些文件在指向文件的目錄路徑中的某處具有特定字元串。
例如,假設文件 foo.zip 包含以下文件:
a/1.txt acme/2.txt a/acme/b/3.txt a/b/acmenet/c/4.txt a/b/c/5.txt a/acme/d/6.php
Linux 命令“unzip foo.zip *.txt”將提取所有 5 個“txt”文件。
如何修改此 Linux 命令,使其僅提取目錄路徑中某處具有字元串“acme”的 3 個“txt”文件(因此它只會提取 2.txt、3.txt 和 4.txt)?
您的範例
unzip foo.zip *.txt
僅起作用,因為您的工作目錄中沒有*.txt
文件。否則*.txt
,shell 會將其擴展為目錄中文本文件的名稱。為了安全起見,您需要引用它。由於
unzip
使用 glob,請使用unzip foo.zip '*acme*/*.txt'
甚至
unzip foo.zip '*acme*.txt'
如果您不想恢復原始目錄結構並將文件提取到目前工作目錄,請添加選項
-j
:unzip -j foo.zip '*acme*/*.txt'