1 votes

Comment utiliser find pour lister tous les fichiers sauf ceux sous .git ?

Je veux trouver une liste de fichiers (pas de répertoires) excluant ceux sous .git

Je suis en train d'essayer certaines suggestions find syntaxe à réaliser comme suggéré dans cette question SO :

https://superuser.com/questions/397307/how-to-ignore-certain-filenames-using-find

Voici ce que j'ai tenté

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* \)

Mais la sortie contient toujours des fichiers dans .git . Voici une liste partielle

.
./.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 version d'OS X est El Capitan, et j'utilise zsh . find est situé à /usr/bin

Est-ce un OS X find problème ? Dans l'affirmative, comment puis-je obtenir le résultat escompté ?

EDIT

J'ai essayé cette commande

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

et c'est plus proche de ce que je veux. Cependant, dans la sortie, je peux toujours voir le dossier .git

1 votes

Solution rapide : find . | grep -v '^\./\.git'

0 votes

Les exemples de la question liée n'élaguent pas, n'ont pas de -o ou n'ont pas de (, alors d'où viennent-ils - + ? git correspondra plus que vous ne le souhaitez

0 votes

La réponse acceptée n'est pas correcte, mais il faut utiliser -wholename comme indiqué dans les commentaires.

1voto

yoliho Points 340

La réponse acceptée n'est pas correcte mais avec un commentaire, cela vous permet de démarrer.

Pour ne pas obtenir de fichiers html

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

-name cherche la partie fichier du chemin pour le chemin complet dont vous avez besoin --wholename so

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

Ainsi, seuls les fichiers (-type) ignorent le répertoire .git - notez que vous devez entrer les délimiteurs de répertoire et le . sinon vous supprimez des fichiers comme .gitconfig qui sont valides.

OK, ceci regarde tous les fichiers -prune pourrait en regarder moins mais la vitesse n'a probablement pas d'importance il est préférable comme dans tout code d'obtenir d'abord un fonctionnement compréhensible

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X