私はそうtarを使用する。
tar -cjpvf a.tar "$pattern1" "$pattern2"
問題は、パターン1とパターン2が時々同じファイルと一致しますが、tarはこれらの重複項目をフィルタリングしないようです。
たとえば、次の例では、アーカイブに2つの重複エントリを追加します。
%> tar -cjpvf a.tar /etc/passwd /etc/passwd
%> tar -xvf a.tar
etc/passwd
etc/passwd
どのようにフィルタリングできますか?
ベストアンサー1
pattern1
がシェルワイルドカードパターンの場合、pattern2
またはパターンを使用できます。
tar -cjpvf a.tar @($pattern1|$pattern2)
これにはksh、bash、またはzshが必要です。 Bashでは、パターン構文をshopt -s extglob
有効にするには実行する必要があります。@(…)
zshでは、setopt ksh_glob
最初に実行するか(zshに変数に文字列の代わりにパターンが含まれていることを知らせる@($~pattern1|$~pattern2)
)、デフォルトの構文を使用する必要があります($~pattern1|$~pattern2)
。