gpt4 book ai didi

find - 'find' 与 'xargs' 和 'tar'

转载 作者:行者123 更新时间:2023-12-04 01:35:21 33 4
gpt4 key购买 nike

我有以下想做的事情:

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% 工作。如果我排除了“ tar ”,那么我就会得到我想要的(到屏幕上)。但是一旦我包含管道和 tar ,它就会对所有内容进行 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 -
那么我做错了什么?我以前这样做过;但现在它只是让我白头发。

最佳答案

-print的组合标志查找,然后 --files-from 'tar' 命令对我有用。在我的情况下,我需要对 5000 多个日志文件进行 tar 处理,但仅使用“xargs”在结果文件中只给了我 500 个文件。

find . -name "*.pdf" -print | tar -czf pdfs.tar.gz --files-from -
您有“--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 -

关于find - 'find' 与 'xargs' 和 'tar',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11540964/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com