关闭目录站点中的所有PDF,保留目录站点框架

我正在尝试创建一个压缩的tarball,其中包含我的目录网站中存在的所有PDF提交。 需要保留目录站点框架。 空房目录网站不是必需的,但如果它们存在,我实际上是未提交的。

作为一个例子,声称我有一个类似于这样的目录站点:

dir
dir/subdir1
dir/subdir1/subsubdir1/song.mp3
dir/subdir2
dir/subdir2/subsubdir1
dir/subdir2/subsubdir1/document.pdf
dir/subdir2/subsubdir1/another-song.mp3
dir/subdir2/subsubdir1/top-ten-movies.txt
dir/subdir3
dir/subdir3/another-document.pdf

运行命令后,我肯定会让dir.tar.gz有这个:

dir
dir/subdir2
dir/subdir2/subsubdir1
dir/subdir2/subsubdir1/document.pdf
dir/subdir3
dir/subdir3/another-document.pdf

可能?

0
2019-05-13 03:58:51
资源 分享
答案: 2

这肯定会详细说明所有PDF:

$ find dir/ -name '*.pdf'
./dir/subdir2/subsubdir1/document.pdf
./dir/subdir3/another-document.pdf

您可以将其传递给xargs以将其作为单独的空间 - 分隔行,并将其提供给tar以创建存档:

$ find dir/ -name '*.pdf' | xargs tar czf dir.tar.gz

(这意味着遗漏了空缺的目录网站)

0
2019-05-17 16:28:14
资源

使用bash≥4或zsh以及GNU tar:

tar -czf dir.tar.gz dir/**/*.pdf

如果您拥有各种各样的PDF文档并且命令行也很长,则无法运行。 在那之后你肯定需要一个额外的复杂的基于查找的补救措施(再一次,使用GNU tar):

tar -cf dir.tar -T /dev/null
find dir -name '*.pdf' -exec tar -rf dir.tar {} +
gzip dir.tar

或者(也可以移植),您可以使用PAX创建存档。

pax -w -x ustar -s '/\.pdf$/&/' -s '/.*//' . | gzip >dir.tar.gz

第一个-s声称包含所有.pdf文档,而不转换其名称。 第二个-s声称将所有其他各种文档重新标记为空名,实际上建议不要将它们包含在存档中。

0
2019-05-17 14:58:17
资源