我有以下我想做的事情:
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个深度的子目录,然后一旦修剪完毕,将其余部分用完.
不难.管道(|)之前的位工作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 -
那么我做错了什么?我以前做过这个; 但现在它只是给了我白发.
dav*_*ner 17
对我有用的是find的-print标志和tar命令的--files-from的组合.在我的情况下,我需要tar 5000个日志文件,但只使用xargs只给了我500个文件在结果文件中.
find . -name "*.pdf" -print | tar -czf pdfs.tar.gz --files-from -
Run Code Online (Sandbox Code Playgroud)
你有"--files-from = - ",当你只想要"--files-from - "然后我认为你需要一个 - 在cvf前面,如下所示.
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.gz --files-from -
Run Code Online (Sandbox Code Playgroud)
我记得像下面这样做一些tar文件.我特别关注我想要分组的文件,所以我运行了这样的东西
find . -name "*.xyz" | xargs tar cvf xyz.tar;
Run Code Online (Sandbox Code Playgroud)
在你的情况下,我想知道你为什么在-print之前做"-o"似乎又包括了一切