[英]Linux - how can I tar only directories that contain specific files?
我已经搜索并尝试了几个小时,但似乎无法完全完成最后一步。
我需要做的是搜索所有.xml文件的两层子目录,并且包含.xml文件的任何第一层子目录都是我要压缩的子目录-但是我无法正确使用sed命令,所以我没有甚至没有搞清楚tar命令。 例如,如果我有以下文件
/dir1/subdir1/file.xml
/dir2/subdir2/file.xml
/dir3/file.doc
/dir4/file.xml
/dir5/subdir1/file.doc
我只想结束对dir1,dir2和dir4的处理; .xml文件的深度可能在1或2层之内,而我不希望tar没有.xml文件的目录。
我认为解决方案是find __ |的组合。 sed ____ | tar,但是我无法正确执行sed命令。 到目前为止找到__ | 我拥有的sed ___命令是:
find . -maxdepth 3 -type f -name '.xml' | sed 's/*.xml//'
它会在接下来的2个子目录中查找所有“ .xml”文件,然后在没有“ .xml”扩展名的情况下打印该文件的路径列表。 即使我真正需要的是没有文件,这也是我得到的最接近的文件。
即使只是帮助sed命令也将有所帮助! 谢谢!
您可以使用cut
代替sed
:
find -maxdepth 3 -type f -name "*.xml" | cut -d / -f 2 | sort -u | xargs tar -cf stuff.tar
sort -u
是必需的,因此当一个目录包含多个XML文件时,不要sort -u
包含一个目录。
我想find会给您适当的列表,并且您不需要sed,仅使用dirname就足够了。
试试类似find . -maxdepth 3 -type f -name '*.xml' | xargs dirname
东西find . -maxdepth 3 -type f -name '*.xml' | xargs dirname
find . -maxdepth 3 -type f -name '*.xml' | xargs dirname
find . -maxdepth 3 -type f -name '*.xml' | xargs dirname
并将其再次通过管道传递到tar。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.