tar 一个目录并仅包含某些文件类型

tar 一个目录并仅包含某些文件类型

按照此处的说明进行操作:http://linuxdevcenter.com/pub/a/linux/lpt/20_08.html

我的目标是打包一个目录,但只想包含该目录中的 .php 文件。

根据上述说明,我想出了这个命令。它会创建一个名为 IncludeTheseFiles 的文件,其中列出了所有 .php 文件,然后 tar 应该只使用 IncludeTheseFiles 中列出的文件来完成它的工作

find myProjectDirectory -type f -print | \
egrep '(\.[php]|[Mm]akefile)$' > IncludeTheseFiles
tar cvf myProjectTarName -I IncludeTheseFiles

但是,当我运行它时,它不喜欢“我包含”选项?

tar: invalid option -- I

答案1

这可以解决问题,不需要比较文件:

find myProjectDirectory -type f \( -name \*\.php -o -name \*\.js -o -name \*\.css -o -name \*\.inc \) | xargs tar -rf myProjectTarName.tar

答案2

在我的 Ubuntu 8.04 系统上阅读 Gnu tar 的手册页,它显示:

-T, --files-from F
    get names to extract or archive from file F

-I除了提到历史上它曾用于请求 bzip 压缩之外,它没有引用任何其他选项。

答案3

您应该能够指定 stdin 作为文件名的来源。尝试:

find myProjectDirectory -type f -regextype posix-egrep -regex ".*/(.*\.[php]|[Mm]akefile)$ -print | \
tar cvf myProjectTarName --files-from=-

相关内容