📜  tar 从文件中排除目录 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:05:29.287000             🧑  作者: Mango

从文件中排除目录 - Shell/Bash

在使用tar命令打包压缩文件的时候,我们有时需要排除一些不必要的目录或者文件,以免占用额外的存储空间。本文将介绍如何使用tar命令排除文件中的目录。

方法一:使用--exclude选项

tar命令提供了一个--exclude选项,可以用来指定需要排除的文件或目录。该选项的使用格式如下:

tar --exclude=PATTERN -zcvf target.tar.gz source_dir/

其中,PATTERN指定需要排除的目录或文件名称模式(支持通配符),target.tar.gz指定打包后的文件名,source_dir/指定需要打包的目录。

例如,如果要排除目录logs和文件*.log,可以执行以下命令:

tar --exclude=logs --exclude=*.log -zcvf target.tar.gz source_dir/

该命令将打包source_dir/目录下除了logs目录和.log文件外的所有内容,并将打包结果保存为target.tar.gz文件。

方法二:使用--exclude-from选项

除了单个排除选项之外,tar命令还提供了--exclude-from选项,用于从指定文件中读取需要排除的目录或文件信息。该选项的使用格式如下:

tar --exclude-from=FILE -zcvf target.tar.gz source_dir/

其中,FILE指定存放需要排除目录或文件信息的文件名称,格式为每行一个排除项。

例如,如果有一个名为exclude.txt的文件,其内容如下:

logs/
*.log

那么,可以执行以下命令:

tar --exclude-from=exclude.txt -zcvf target.tar.gz source_dir/

该命令将打包source_dir/目录下除了exclude.txt文件中列出的所有目录和文件外的所有内容,并将打包结果保存为target.tar.gz文件。

总结

以上两种方法都可以很方便地实现从文件中排除目录或文件的功能,具体使用哪种方法取决于个人需求以及排除项的数量和复杂度。需要注意的是,在排除目录或文件时,一定要保证排除项的模式匹配正确,否则可能会将不应该排除的文件也一同排除掉。