Come usare find per elencare tutti i file tranne quelli sotto .git?

1

Voglio trovare un elenco di file (senza directory) esclusi quelli in .git

Sto provando la sintassi find suggerita per ottenere come suggerito in questa domanda SO:

link

Ecco cosa ho provato

find . -type f ! -name '*.git*' 

find . \( -type f  -prune -o \! -name '*git*' \)
find . \( -type f  -prune -o \! -name *git* \)
find . \( -type f  -prune -o ! -name *git* \)

Ma l'output contiene sempre file in .git . Ecco un elenco parziale

.
./.coveragerc
./.DS_Store
./.git/.DS_Store
./.git/COMMIT_EDITMSG
./.git/config
./.git/FETCH_HEAD
./.git/HEAD
./.git/hooks
./.git/hooks/disable-commit-msg
./.git/hooks/pre-push
./.git/hooks/prepare-commit-msg
./.git/index
./.git/info
./.git/info/exclude
./.git/info/refs
./.git/logs
./.git/logs/HEAD
./.git/logs/refs
./.git/logs/refs/heads
./.git/logs/refs/heads/1312

La versione OS X è El Capitan e sto usando zsh . find si trova in /usr/bin

È un problema di OS X find ? In tal caso, come posso ottenere il risultato desiderato?

Modifica

Ho provato questo comando

find . \( -type d -name '.git' -o -type f  \)  -prune

ed è più vicino a quello che voglio. Tuttavia nell'output posso ancora vedere la cartella .git

    
posta Anthony Kong 07.11.2015 - 00:50
fonte

1 risposta

1

La risposta accettata non è corretta ma con un commento ti fa partire.

Per non ottenere file html

find . -type f   ! -name '*.html'

-name loks nella parte del file del percorso per l'intero percorso di cui hai bisogno --wholename so

find . -type f  ! -wholename '*/.git/*' ! -name '*.html'

Quindi, solo i file (-type) ignorano la directory .git - si noti che è necessario inserire i delimitatori di directory e il file. oppure rimuovi file come .gitconfig che sono validi

OK questo sembra che tutto il file -prune possa sembrare meno ma la velocità probabilmente non ha importanza è meglio come in tutto il codice per ottenere prima una cosa funzionante comprensibile

    
risposta data 07.11.2015 - 01:22
fonte

Leggi altre domande sui tag