やりたいことは次のとおりです。
find . -maxdepth 6 \( -name \*.tar.gz -o -name bediskmodel -o -name src -o -name ciao -o -name heasoft -o -name firefly -o -name starlink -o -name Chandra \) -prune -o -print | tar cvf somefile.tar --files-from=-
つまり、大量のものを除外し、6 つのサブディレクトリの深さだけを調べ、枝刈りが完了したら、残りを 'tar' します。
難しいことではありません。パイプ (|) の前のビットは 100% 機能します。「tar」を除外すると、(画面に)求めているものが得られます。しかし、パイプとタールを含めると、「検索」で除外したすべてのものを含め、すべてがタールになります。
私はいくつかの異なる反復を試しました:
-print0 | xargs -0 tar rvf somefile.tar
-print0 | xargs -0 tar rvf somefile.tar --null --files-from=-
-print0 | tar cvf somefile.tar --null -T -
それで、私は何を間違っていますか?私は以前にこれをやったことがあります。でも今は白髪が増えるだけです。