考虑以下文件夹结构:
它会打包所有包含dir2/the_folder的文件夹,我不想这样。有什么解决办法?
root/dirA/the_folder
root/dirA/dir2/the_folder
root/dirB/the_folder
root/dirB/dir2/the_folder
我希望能够递归查找并压缩 dirA/the_folder
和 dirB/the_folder
。然而,当我使用以下命令时:
find root/ -name 'the_folder' -type d | xargs tar cvf myTar.tar
它会打包所有包含dir2/the_folder的文件夹,我不想这样。有什么解决办法?
tar
(至少是GNU版本)具有令人难以置信的过滤功能!与bash通配符一起使用,它几乎使find
变得无用。 - gniourf_gniourftar
的过滤能力?:)
你是对的,这只是一个简单的 bash globbing! - gniourf_gniourffind
可以用于许多其他上下文中,而不仅仅是为tar
收集输入文件,因此说tar
的选项可能会使find
“几乎无用”有点过了。实际上,我认为相反:学习find
的选项以满足您的通用“输入文件收集”需求比学习tar
、grep
、sed
、bash
globbing等选项更有效,但我理解您的观点。在这个特定的上下文中,您的解决方案优于我的解决方案。然而,我的解决方案可以*无论您打算如何处理所识别的文件都能够工作。;-) - DevSolar