в $dir
, я хочу получить обзор всех файлов / каталогов (рекурсивно), но:
- исключить все файлы / директории, которые включены в
$list
(предположим $ list* разделены символом новой строки) - включает только каталоги самого высокого уровня, не включенные в
$list
вместо целых деревьев под ними
В настоящее время я использую:
cd $dir && git init && echo "$list" > .gitignore && git status && rm -rf .git .gitignore
это просто, и список «неотслеживаемых файлов» - это то, что мне нужно, но он не совсем чистый, так как он выполняет кучу ненужных операций ввода-вывода файловой системы для репозитория tmp git и игнорирует файл.
Я также размышлял find
с действиями обрезки или чем-то вроде empty=$(mktemp -d) && rsync -nv --exclude-from=$list $dir/ $empty
, но они не сработали бы так, как я хочу.
как бы вы это реализовали?Есть ли какой-либо существующий инструмент оболочки / Python / ..., который делает именно это?или я могу как-то повторно использовать код git, не создавая временный репозиторий git (или другой инструмент vcs?)?