2011-12-16 68 views
1

$dir,我想获得的所有文件/显示目录(递归)的概况,但是:如何实现类似VCS状态/忽略程序的东西?

  • 排除其中包括在$list所有文件/显示目录(假设$列表换行分隔)仅
  • 包括最顶级的目录不包括在$list,而不是整个树底下的

我目前使用的:

cd $dir && git init && echo "$list" > .gitignore && git status && rm -rf .git .gitignore

这很简单,'未跟踪文件'列表是我需要的,但并不真正干净,因为它为tmp git存储库和忽略文件做了一堆不需要的文件系统I/O。

我也一直在琢磨find与修剪行动或类似empty=$(mktemp -d) && rsync -nv --exclude-from=$list $dir/ $empty但这些不会按我希望他们的方式工作。

你会怎么实现这个?是否有任何现有的shell/python/...工具可以做到这一点?或者我可以以某种方式重用git代码而无需实际制作临时git存储库(或其他vcs工具?)?

回答

1

道歉提前为简洁1衬格式(这是比较容易来测试这种方式)

for FILE in `find .`; do eval "case \"$FILE\" in "$list");;*)echo \"$FILE\";;esac";done 

的列表中选择格式将是” ./path/to/file|dir|dir/* | * allfilesmatchingthis * | * .git ...“

用任何”状态“类型命令替换回显

相关问题