Isso pode ser, em essência, uma duplicata da pergunta , no entanto, o script perl fornecido não funcionou na minha caso, tanto quanto eu posso dizer. Há também muitas perguntas sobre como encontrar vários padrões, mas é surpreendentemente difícil pesquisar porque o Google não parece fazer diferença entre um "arquivo de padrões" e um "padrão de nome de arquivo".
Eu gostaria de imitar o comportamento de
git status --ignored --porcelain | awk '{print $2}'
em uma pasta sem repositório. Ou seja, gostaria de listar arquivos e diretórios que correspondam aos padrões listados em um arquivo (especificado), com as seguintes restrições :
Aqui está um exemplo simples:
$> cat .gitignore
*.DS_Store*
tmp/
a/**/foo
$> tree -a .
.
|-- .DS_store
|-- .gitignore
|-- a
| |-- b
| | |-- foo
| | | '-- file
| | '-- tmp
| |-- foo
| '-- tmp
| '-- file
'-- c
|-- .DS_Store?
'-- foo
5 directories, 8 files
$> git status --ignored --porcelain | awk '{print $2}'
.DS_store
a/b/foo/
a/foo
a/tmp/
c/.DS_Store?
Se possível, eu estaria particularmente interessado em soluções que funcionam tanto no osx como no linux, e que podem ser estendidas para considerar padrões no formato posix-egrep. Para a última parte, algo semelhante a find . -print | egrep -f patternfile
poderia funcionar, embora isso andasse em diretórios correspondentes, o que poderia tornar as coisas muito lentas.
Tags git grep find regular-expression