Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 04 May 2011 09:24:22 -0400
From:      Lowell Gilbert <>
To:        Modulok <>, kron24 <>
Subject:   Re: Piping find into tar...
Message-ID:  <44r58ey4xl.fsf@lowell-desk.lan>
In-Reply-To: <> (kron's message of "Wed, 04 May 2011 13:25:08 +0200")
References:  <> <> <> <> <>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
kron24 <> writes:

> Dne 4.5.2011 11:42, Modulok napsal(a):
>>>> By the way, in reference to the commands above the -j option is for
>> bzip2, so the extension should be .tbz o_O
>> Thanks everyone! I went with the following, because it works regardless of
>> space characters in filenames. (Thanks for the correction on the extenion. It
>> should indeed be 'tbz' when using the 'j' flag.)
>> find -E . -regex '.*\.txt$' -print0 | xargs -0 tar -cjf result.tbz
> When the amount of files is huge then tar will be invoked twice
> or more. Thus result.tbz will contain just files from the last invocation.

Yes, xargs isn't part of the solution for this case unless you use the
update mode to tar, which will be much slower.  However, tar can read
the file list from a file, which can be stdin if you want.  The
equivalent of the above command would be something like:

find -E . -regex '.*\.txt$' -print0 | tar --null -T - -cjf result.tbz

> I consider cpio a better option here.

The old ways still work very well.

But it's worth noting that on FreeBSD these days, cpio(1) and tar(1) are
both implemented on the same library, so there are very few things that
one can do but the other cannot.

Want to link to this message? Use this URL: <>