tarを使用した重複ファイル名のフィルタリング

tarを使用した重複ファイル名のフィルタリング

私はそう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)

おすすめ記事