命令tar
有一个选项--exclude-from
:
-X, --exclude-from=FILE
Exclude files matching patterns listed in FILE.
如何列出与FILE
.
我正在制作一个脚本来备份我的主目录,我不想意外地忽略一些重要的东西。
答案1
如果您要压缩,某些tar
命令将超级优化它们的功能/dev/null
,例如
tar cvf /dev/null . >/tmp/a
将创建所有文件的列表,.
而不实际读取任何数据。在我的 10G 家庭上,花了 3 秒,大约与find
.
因此,您可以执行上述操作,然后对排除列表执行相同的操作/tmp/b
,然后diff
在它们之间执行操作以查看丢失的内容。
sort
或者,也通过管道传输每个输出,然后用于comm -3 /tmp/a /tmp/b
仅获取排除的文件。
答案2
while read -r pattern; do
printf 'Pattern: "%s"\n' "$pattern"
echo 'Matches:'
find . -path "$pattern" -print
done <patterns
这将从文件中获取每个模式patterns
并报告当前目录中的哪些名称与其匹配。
答案3
这可能很棘手,因为 tar 和 find 匹配模式的方式不同。但也许您正在寻找这样的东西:
for pattern in $(cat FILE)
do
find $HOME -path "*$pattern*"
done