GNU/Linux >> Tutoriels Linux >  >> Linux

Trouver :Prune n'ignore pas le chemin spécifié ?

Je dois exclure .git de ma find chercher. Pour y parvenir, j'utilise le -path ./.git -prune commutateur :

$ find . -path ./.git -prune -o ( -type f -o -type l -o -type d ) | grep '.git'
./.git

Cependant, même si cela ignore le contenu du répertoire .git, il répertorie le répertoire lui-même. Cela fonctionne lorsque j'ajoute -path ./.git -prune -o -print -a

find . -path ./.git -prune -o -print -a ( -type f -o -type l -o -type d ) | grep '.git'

Pourquoi est-ce nécessaire. Je pensais que les deux commandes devraient avoir la même sortie. La deuxième syntaxe est assez moche.

Réponse acceptée :

L'man page pour find donne :

-prune True; if the file is a directory, do not  descend  into  it.  If
      -depth  is  given,  false;  no  effect.  Because -delete implies
      -depth, you cannot usefully use -prune and -delete together.

Donc dans le premier exemple ce n'est pas ainsi que -path ./.git -prune est faux et donc l'action par défaut (-print ) ne serait pas appelé, donc la ligne est imprimée.


Linux
  1. erreur :src refspec main ne correspond à aucun [GIT]

  2. Pourquoi Sudo ignore-t-il les alias ?

  3. Pourquoi Find n'accepte-t-il pas '-exec Cp {} Dir +' ?

  4. Vsftpd ne répertorie pas le contenu d'un répertoire ?

  5. Pourquoi `exit &` ne fonctionne pas ?

comment trouver le chemin HADOOP_HOME sous Linux ?

Comment trouver le chemin d'installation de git sous Mac ou Linux ?

Les commandes personnalisées Git de PATH ne fonctionnent pas

Pourquoi cette regex ne fonctionne-t-elle pas sous Linux ?

Savoir si la bibliothèque est dans le chemin

ldd ne trouve pas le chemin, comment ajouter