Linux - 我怎样才能只包含包含特定文件的目录?

时间:2017-11-04 23:02:12

标签: linux unix sed find tar

我现在已经搜索并尝试了几个小时,但似乎无法完成最后一步。

我需要做的是搜索所有.xml文件的两层子目录,并且包含.xml文件的任何第一层子目录是我想要tar的子目录 - 但是我无法正确获取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//'

找到接下来的两个子目录中的所有“.xml”文件,然后打印该文件的路径列表,而不是“.xml”扩展名。这是我最接近的,即使我真正需要的是没有文件一起。

即使只是帮助使用sed命令也会有所帮助!谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用sed

而不是cut
find -maxdepth 3 -type f -name "*.xml" | cut -d / -f 2 | sort -u | xargs tar -cf stuff.tar

需要sort -u,因此当它包含多个XML文件时,您不会多次包含目录。

答案 1 :(得分:-1)

我想发现会给你正确的清单,而你不需要sed,只需使用dirname即可。

尝试类似<td th:style="${obj.qtdItem == 0 ? 'color: red;'}" th:text="${obj.text}"></td> 的内容并再次将其传输到tar。