bsdtar --includeのtar代替

bsdtar --includeのtar代替

bsdtar私のLinuxディストリビューションで利用できないスクリプトを調整しようとしています。

bsdtar -x -f <file> --include="SOME/FOLDER/"

--includeinコマンドtarの代替案は何ですか?

答え1

以前の Solaris ドキュメントによると、次のように使用できます。

tar -xf <file> $(tar -tf <file> |grep "SOME/FOLDER/")

もちろん、GNUにはtar抽出するファイルのフィルタを定義するオプションがありますが、そのようなオプションは使用されていません。

答え2

コマンドラインでフォルダ名を指定します。tar xf tar.tar x/b

テスト

$rm -fr x; mkdir x x/a x/b x/b/d; touch x/nonofile x/b/f1 x/b/f2 x/b/d/f3;\
 tar cf tar.tar x;\
 rm -fr x; tar xf tar.tar x/b;\
 find x;
x
x/b
x/b/f2
x/b/d
x/b/d/f3
x/b/f1

「nonofile」は正しくスキップされましたが、f1 f2 f3はすべて抽出されます。

関連情報