从命令行输出中排除目录

时间:2012-04-11 03:05:01

标签: svn bash scripting directory

我正在尝试使用以下命令创建在SVN修订版之间添加或修改的所有文件的tar.gz:

svn diff -r1:HEAD --summarize|grep -ve '^D'|awk '{print $2}'|xargs tar -vzcf file.tar.gz --exclude .svn

我想我正在寻找收紧这个命令的任何提示,但是我的主要问题是带有修改的文件夹被添加到存档中,而这又是添加整个文件夹的内容,这是不可取的。< / p>

我希望有一些|xargs test -f的内容,但如果为true,它将返回文件名,如果为false则返回任何内容,因此从混合中排除目录。

谢谢!

1 个答案:

答案 0 :(得分:0)

我决定使用快速perl脚本来解决这个问题:

exclude_dir.pl:

#!/usr/bin/perl -w

use diagnostics;
use strict;

my $arg = '';

while ($arg = shift) {
  print "$arg\n" if -f $arg;
}

然后将命令修改为:

svn diff -r1:HEAD --summarize|grep -ve '^D'|awk '{print $2}'|xargs exclude_dir.pl|xargs tar -vzcf file.tar.gz --exclude .svn