通过查找和grep减少列表后的tar文件?
我已经制定了这个命令,给我一个要发送到tar的文件列表,如何将这个列表发送到tar通过查找和grep减少列表后的tar文件?,grep,find,tar,Grep,Find,Tar,我已经制定了这个命令,给我一个要发送到tar的文件列表,如何将这个列表发送到tar find . -not -type l | grep -E "(^\.\/bin\/custom|^\.\/config\/local)" | grep -v -E "(.settings|.classpath|.external)" 我想保留bin/custom和config/local的层次结构* 我不想要任何其他文件(有很多),bin/custom是一个目录,config/local*是config中的文
find . -not -type l | grep -E "(^\.\/bin\/custom|^\.\/config\/local)" | grep -v -E "(.settings|.classpath|.external)"
您可以使用如下构造:
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
所以这一点最初是有效的,但我尝试再次使用它,我得到了一个错误:zsh:参数列表太长:tar我假设这意味着有太多的文件,有任何解决这个问题的建议吗?谢谢你的完美回答,更重要的是,一个超快速的答复。我真的很感激!