Erre a kérdésre már itt vannak válaszok :

megjegyzések

  • ott ' sa tucat kérdés a -prune használatával kapcsolatos problémákról: kissé zavaró lehet. Szintén ez a stackoverflow-n leírja, hogy miért ' ilyen bosszantó dolog használni.
  • Még akkor is, ha ez dupe, a legjobb válasz itt egyértelműbb, mint a legjobb válasz a " helyes " kérdésre.
  • Hmm, " find -prune nem ' t dolgozik nekem " biztos hangok eltér a " -től, hogyan zárhatom ki a könyvtárakat a keresési kimenetből? " nekem …
  • @SamB egyetértett , ez ' nem lehet duplikátum.

Válasz

Erre szolgál a -prune opció:

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

Ez alapvetően azt mondja, hogy “ha van”, akkor a könyvtár avoid_this_directory_please nevű, ne írja be, különben, ha “normál fájl, nyomtassa ki az útvonal nevét”.

Megjegyzések

  • ugyanazt fogtam írni, kissé másként, mint find . \( -type d -name 'avoid_this_directory_please' -prune \) -o \( -type f -print \), de a szintaxisom jobban tetszik. Köszönöm.
  • @TimKennedy Valószínűleg szükséged lesz a szülőre, ha find . -type d \( -name "A" -o -name "B" \) -prune -o -type f -print.
  • jó pontot akarsz tenni. Nem is tudom, hogy mikor / hol tanultam meg ezt zárójelekkel megtenni. az a kor elvész az idő ködében. 🙂
  • Ez természetesen levágja a avoid_this_directory_please nevű könyvtárakat, bárhol a fán, nem csak a legfelső szintű könyvtárakat. A -path nagyobb ellenőrzést tesz lehetővé ebben, mivel a man oldal ( alább idézi Xen2050) állítja.
  • Nem tudtam, hogy -prune mindent figyelembe vett az első argumentum, ide értve a -type kifejezést, és értetlenkedett, hogy nem sikerült metszeni a könyvtárakat a find / -type f -path /proc -prune -o -name foo -print paranccsal. A -type d és a -type f azonos parancsban való látása késztette számomra a kattintásra. Most végre biztos vagyok benne, hogy köszönöm a find alkalmazást.

Válasz

A könyvtár elkerülése érdekében próbálja ki a -path tesztet:

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

Megjegyzések

  • Vegye figyelembe, hogy bár megakadályozza a (z) avoid_this_directory_please fájlok kiválasztását (kivéve, ha útvonaluk érvénytelen karaktereket tartalmaz), nem akadályozza meg a find lemerülést odabent. . Ez az ' s ezért jobb itt a -prune.
  • Ez sokkal jobb, mint a . Mindig fél órát kell olvasnom, hogy kitaláljam, mit adok meg ', amit nem akarok megtalálni, majd párosítom az OR logikával, hogy megszerezzem a kívánt fájlokat.
  • @Merlin Nyilvánvalóan attól függ, hogy mit akarsz elérni. A -prune funkcióval find nem nyert ' még a kiválasztott útvonalakat sem, míg a ! -path, akkor is megadná az utat és mindent megvizsgálna.

Válasz

A (z) man find felől, a -path szakaszban láthatóan ötvözi a másik 2 választ

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 

Válasz

Próbálja ki ezt

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

Megjegyzések

  • Ez akkor működik, ha csak egy bővítménytípust keres. A következő nem fog sikerülni: find -name "*.js" -o -name "*.css" -not -path "./directory/*"

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük