通过find和grep减少列表后的tar文件吗?

时间:2019-12-13 23:54:37

标签: grep find tar

我已经制定出此命令来给我要发送到tar的文件列表,如何将这个列表发送到tar?

find . -not -type l | grep -E "(^\.\/bin\/custom|^\.\/config\/local)" | grep -v -E "(.settings|.classpath|.external)"
  1. 我想保留bin / custom和config / local *的层次结构
  2. 我不要任何其他文件(有很多文件),bin / custom是目录,而config / local *是config中的文件
  3. 我不要任何符号链接
  4. 我要排除一些隐藏文件(.settings | .classpath | .external)

1 个答案:

答案 0 :(得分:1)

您可以使用如下构造:

tar cvf tarfile.tar $(find . -type f | grep -E "(^\.\/bin\/custom|^\.\/config\/local)" | grep -v -E "(.settings|.classpath|.external)")

您只需提供要添加到tar存档中的文件列表即可。

并且不需要使用-not -type l-type f仅提供文件(不提供链接) 如果文件很多,可以解决此问题:

find . -type f | grep -E "(^\.\/bin\/custom|^\.\/config\/local)" | grep -v -E "(.settings|.classpath|.external)"|xargs tar cvf tarfile.tar