Tähän kysymykseen on jo annettu vastauksia :

Kommentit

  • Siellä ' sa tusinaa kysymystä ongelmista -prune: n käyttämisessä: se voi olla hieman hämmentävä. Myös tämä pinonsiirtovirralla kuvaa, miksi se ' on niin ärsyttävä asia.
  • Vaikka tämä olisikin dupe, paras vastaus on selkeämpi kuin paras vastaus " oikeaan " kysymykseen.
  • Hmm, " find -prune ei ole ' t, joka toimii minulle " varma ääni erilainen kuin " miten voin sulkea hakemistot etsimistuloksesta? " minulle …
  • @SamB sopinut , tämä voi ' olla mahdollisesti kaksoiskappale.

Vastaa

Tätä varten vaihtoehto -prune on tarkoitettu:

find . -type d -name "avoid_this_directory_please" -prune -o -type f -print 

Tässä sanotaan periaatteessa ”jos on” -hakemisto kutsutaan avoid_this_directory_please, älä kirjoita sitä, muuten, jos se on tavallinen tiedosto, tulosta polun nimi.

Kommentit

  • Aion kirjoittaa saman asian, hieman eri tavalla, kuten find . \( -type d -name 'avoid_this_directory_please' -prune \) -o \( -type f -print \), mutta pidän syntaksistasi paremmin. Kiitos.
  • @TimKennedy Tarvitset todennäköisesti parensia, jos haluat tehdä find . -type d \( -name "A" -o -name "B" \) -prune -o -type f -print.
  • hyvä asia. En tiedä edes ' edes, milloin / missä opin sen tekemään suluilla. tuo ikä on kadonnut ajan sumuissa. 🙂
  • Tämä tietysti katkaisee kaikki hakemistot, joita kutsutaan avoid_this_directory_please missä tahansa puun kohdassa, ei vain ylätason hakemistoissa. -path antaisi paremman hallinnan siinä, koska -sivulla ( lainaa alla , Xen2050) toteaa.
  • En tiennyt, että -prune otti kaiken huomioon ensimmäisen argumentti, mukaan lukien -type, ja oli hämmentynyt siitä, että hakemistoja ei voitu karsia find / -type f -path /proc -prune -o -name foo -print -toiminnolla. -type d ja -type f näkyminen samassa komennossa sai minut napsauttamaan. Nyt olen vihdoin varma käyttämästä find, kiitos.

Vastaa

Hakemiston välttämiseksi kokeile -path-testiä:

find . -type f ! -path "*/avoid_this_directory_please/*" 

Kommentit

  • Huomaa, että Vaikka se estää tiedostojen avoid_this_directory_please sisällä olevien tiedostojen valinnan (ellei niiden polku sisällä virheellisiä merkkejä), se ei estä find laskeutumasta sinne . Että ' s miksi -prune on parempi täällä.
  • Tämä on niin paljon parempi kuin käyttää prune. Minun täytyy aina lukea puoli tuntia selvittääkseni, mitä määritän ' et halua löytää, ja pariliitän sitten TAI-logiikkaan saadaksesi haluamasi tiedostot.
  • @Merlin Se riippuu tietysti siitä, mitä haluat saavuttaa. Kun -prune, find ei voittanut ' edes valittuja polkuja, kun taas ! -path, se silti menee polulle ja tutki kaiken.

Vastaa

Alkaen man find -path -osiossa, yhdistämällä ilmeisesti muut 2 vastausta

To ignore a whole directory tree, use -prune rather than checking every file in the tree. For example, to skip the directory `src/emacs" and all files and directories under it, and print the names of the other files found, do something like this: find . -path ./src/emacs -prune -o -print 

Vastaa

Kokeile tätä

find -name "*.js" -not -path "./directory/*" 

Kommentit

  • Tämä toimii, jos etsit vain yhtä laajennustyyppiä. Seuraava epäonnistuu: find -name "*.js" -o -name "*.css" -not -path "./directory/*"

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *