2011-12-16 74 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 ...「

用任何」狀態「類型命令替換回顯

相關問題