【发布时间】:2012-07-17 11:08:44
【问题描述】:
我有以下我想做的事情:
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=-
即,排除一大堆东西,只查看六个子目录深度,然后修剪完成后,将其余部分“tar”起来。
这并不难。管道 (|) 之前的位 100% 工作。如果我排除了“焦油”,那么我就会得到我想要的(在屏幕上)。但是,一旦我包含了管道和焦油,它就会对所有内容进行焦油化,包括我刚刚在“查找”中排除的所有内容。
我尝试了许多不同的迭代:
-print0 | xargs -0 tar rvf somefile.tar
-print0 | xargs -0 tar rvf somefile.tar --null --files-from=-
-print0 | tar cvf somefile.tar --null -T -
那我做错了什么?我以前做过这个;但现在它只是让我白发苍苍。
【问题讨论】:
-
我相信您需要在
*.tar.gz周围加上引号,以避免它在传递给find之前被bash扩展