在$dir
,我想获得所有文件/目录的概述(递归),但是:
- 排除其中包含的所有文件/目录
$list
(假设 $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 工具?)?