[Mini Howto] Korte find introductie voor beginners

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Stacheldraht
  • Registratie: Januari 2008
  • Laatst online: 14-04-2020

Stacheldraht

Frankfurt am Main

Topicstarter
Find is een zeer handig en veel gebruikt commando. Het is voor de Linux beginner misschien niet een van de makkelijkste commando's. Met find is erg veel mogelijk, doormiddel van deze mini-howto krijg je globaal een indruk wat de mogelijkheden van find zijn.

Mocht je meer informatie over find zoeken bekijk dan eens de man-page van find of de vele howto's op het internet.

cd /home/stacheldraht/testje/


Een bestand of directory met de naam: "foo" zoeken.
find . -name "foo" -print


Bestanden of directories met de naam: "foo" zoeken en verwijderen.
find . -name "foo" -exec rm -rf {} \;


Alle files of directories weergeven behalve als ze beginnen met foo of eindigen met bar.
find . ! \( -name "foo*" -o -name "*bar" \) -print


Files doorzoeken op een niet case sensitive patroon.
find . -type f | xargs grep -i "TWEAKER"


Files zoeken die de afgelopen 7 dagen gewijzigd zijn.
find . -mtime -7 -type f -print


Files zoeken van een bepaalde user.
find . -user stacheldraht -print


Directories zoeken met 0777 permissies.
find . -type d -perm 0777 -print


Files zoeken met 0777 permissies.
find . -type f -perm 0777 -print


Files zoeken die groter zijn dan 10MB.
find . -type f -size +10M -print


De permissies van alle gevonden directories veranderen in 0755.
find . -type d -exec chmod 0755 {} \;


Files en directories zoeken die nieuwer zijn dan de file tweaker.
find . -newer "tweaker" -print


Files en directories zoeken die ouder zijn dan de file tweaker.
find . ! -newer "tweaker" -print


Files met een bepaald inode nummer zoeken.
find . -inum 9863420 -print


Files met inode nummer 9863420 verwijderen.
find . -inum 968746 -exec rm -f {} \;


Make files zoeken in een bepaalde directory en in die bewuste directory make uitvoeren.
find . -type f -name "Make" -execdir make \;

Alles hat ein Ende nur die Wurst hat zwei


Acties:
  • 0 Henk 'm!

  • Sallin
  • Registratie: Mei 2004
  • Niet online
Tof plan, zo'n howto :). Ik ga er eens mee aan de gang.

This too shall pass
Debian | VirtualBox (W7), Flickr


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Is het dan niet handig om xargs ook maar meteen uit te leggen?

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • Stacheldraht
  • Registratie: Januari 2008
  • Laatst online: 14-04-2020

Stacheldraht

Frankfurt am Main

Topicstarter
Boudewijn schreef op donderdag 04 februari 2010 @ 14:14:
Is het dan niet handig om xargs ook maar meteen uit te leggen?
Het moet natuurlijk een mini howto blijven ;) Maar als jij een mooie mini howto over xargs wilt schrijven dan is tweakers.net je best wel dankbaar :)

Alles hat ein Ende nur die Wurst hat zwei


Acties:
  • 0 Henk 'm!

  • SeNsEi.Ze0n
  • Registratie: December 2004
  • Laatst online: 14-07-2020
Misschien toch snel vermelden dat find recursief werkt, zeker bij het delete commando.
Zo'n mini howto is inderdaad wel een goed idee.

Acties:
  • 0 Henk 'm!

  • silentsnake
  • Registratie: September 2003
  • Laatst online: 29-05 09:09
Een kleine noot dat dit voor GNU find is, dus wat je standaard op de gemiddelde Linux smaak heb. Op BSD en Solaris (wellicht wel op Solaris 10, maar 9 zeker niet) heb je niet alle functionaliteit in find zoals in de mini howto. Uiteraard kan je GNU find wel gewoon installeren voor zowel BSD al Solaris.

Voor de rest wel een handige mini howto, zat wat tussen wat ik ook niet kon ;)

Acties:
  • 0 Henk 'm!

  • Stacheldraht
  • Registratie: Januari 2008
  • Laatst online: 14-04-2020

Stacheldraht

Frankfurt am Main

Topicstarter
Overigens mijn andere mini howto's zijn hier te vinden:

NOS FAQ

De NOS crew zou het heel leuk vinden als meer mensen dit soort kleine howto's zouden gaan schrijven :)

Alles hat ein Ende nur die Wurst hat zwei


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 13:18

Kees

Serveradmin / BOFH / DoC
Ik weet niet hoe het bij jouw find zit, maar ik gebruik eigenlijk nooit -print, want dat is default ;)

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Stacheldraht schreef op donderdag 04 februari 2010 @ 15:03:
[...]


Het moet natuurlijk een mini howto blijven ;) Maar als jij een mooie mini howto over xargs wilt schrijven dan is tweakers.net je best wel dankbaar :)
Daar koop ik weinig voor ;).

Het was meer een suggestie...

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • Pim.
  • Registratie: Mei 2001
  • Laatst online: 14-05 09:00

Pim.

Aut viam inveniam, aut faciam

Als mensen denken dat er iets bij kan kunnen we heel makkelijk auteurs toevoegen aan de startpost dus geef het vooral even aan :)

"The trouble with quotes from the Internet is that you can never know if they are genuine." - Elvis Presley | Niet met me eens ? DM ME


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 28-02 01:01
Moet find eigenlijk geïndexeerd worden? Ik gebruik namelijk altijd locate en deze moet je eens updaten met updatedb, maar dat hoeft bij find niet?

Acties:
  • 0 Henk 'm!

Anoniem: 26306

Kees schreef op donderdag 04 februari 2010 @ 17:17:
Ik weet niet hoe het bij jouw find zit, maar ik gebruik eigenlijk nooit -print, want dat is default ;)
Ik gebruik wel -print in combinatie met andere opties zoals -print -delete
Megamind schreef op donderdag 04 februari 2010 @ 22:47:
Moet find eigenlijk geïndexeerd worden? Ik gebruik namelijk altijd locate en deze moet je eens updaten met updatedb, maar dat hoeft bij find niet?
Find werkt altijd real-time de directorystructuur door.
SeNsEi.Ze0n schreef op donderdag 04 februari 2010 @ 16:31:
Misschien toch snel vermelden dat find recursief werkt, zeker bij het delete commando.
Zo'n mini howto is inderdaad wel een goed idee.
Find werkt zo recursief als je maar wilt. Je kunt minimale en maximale diepte opgeven. Van de veelgebruikte commando is find ongeveer het krachtigste stuk gereedschap dat er is.

[ Voor 61% gewijzigd door Anoniem: 26306 op 04-02-2010 22:56 ]


Acties:
  • 0 Henk 'm!

  • BoZ_
  • Registratie: Juni 2003
  • Laatst online: 05-10-2020
Ik kom 9 van de 10 keer niet verder dan:
find . | grep iets

;)

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 05-06 22:44

Hero of Time

Moderator LNX

There is only one Legend

BoZ_ schreef op vrijdag 05 februari 2010 @ 08:54:
Ik kom 9 van de 10 keer niet verder dan:
find . | grep iets

;)
Kan je net zogoed dit doen:
grep -r iets . 

Nergens find voor nodig. -r doet recursive, . betekend huidige map (duh).

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Nee.

Jij grept op de inhoud van de huidige directory.
Hij grept op de output van find, dat zijn filenames. Niet de files zelf, maar een lijst met de filenames.
Als hij ook -exec of xargs zou gebruiken doet hij wat jij zegt.

Sowieso is het directory, en niet map. map == windows praat.

[ Voor 12% gewijzigd door Boudewijn op 05-02-2010 20:18 ]

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • MsG
  • Registratie: November 2007
  • Laatst online: 12:37

MsG

Forumzwerver

Leuke howto, maar misschien een beetje uitleg er omheen? Wat houdt die dot in

en als ik (als leek) iets zie als: find . -name "foo" -exec rm -rf {} \;

dan denk ik: -exec? Execute? RM?

Oftewel waar staan die dingetjes voor :).

Onder het mom van:

Give a man the UNIX command he needs and help him for a day.

Teach a man the UNIX syntaxis and feed him for a lifetime :).

[ Voor 24% gewijzigd door MsG op 05-02-2010 20:26 ]

Denk om uw spatiegebruik. Dit scheelt Tweakers.net kostbare databaseruimte! | Groninger en geïnteresseerd in Domotica? Kom naar DomoticaGrunn


Acties:
  • 0 Henk 'm!

  • sparks
  • Registratie: December 2002
  • Laatst online: 12:09
Heb je een lijstje met 'items' waar je een mini HOWTO voor wilt hebben? Dan wil ik best een poging wagen (als dank voor jullie mooie site)

Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 05-06 17:25
MsG schreef (met een zooi lege regels ertussen) op vrijdag 05 februari 2010 @ 20:21:
Leuke howto, maar misschien een beetje uitleg er omheen? Wat houdt die dot in
en als ik (als leek) iets zie als: find . -name "foo" -exec rm -rf {} \;
dan denk ik: -exec? Execute? RM?
Oftewel waar staan die dingetjes voor :).

Onder het mom van:
Give a man the UNIX command he needs and help him for a day.
Teach a man the UNIX syntaxis and feed him for a lifetime :).
Ik verwachtte ook iets meer uitleg toen ik op de topictitel klikte, maar aan de andere kant: als je zo demonstreert hoe veelzijdig find is, maak je mensen (hopelijk) nieuwsgierig en zet je ze ertoe aan om zelf uitgebreidere/officiële documentatie te gaan bekijken. Meer dan voor één specifieke taak iets uitzoeken over find heb ik zelf nog niet gedaan; nu denk ik dat ik dat misschien toch maar eens moet gaan doen.

En het gaat misschien sowieso wat ver om alle basisdingetjes ('dot' en rm) te gaan uitleggen.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 05-06 22:44

Hero of Time

Moderator LNX

There is only one Legend

Boudewijn schreef op vrijdag 05 februari 2010 @ 20:17:
Nee.

Jij grept op de inhoud van de huidige directory.
Hij grept op de output van find, dat zijn filenames. Niet de files zelf, maar een lijst met de filenames.
Als hij ook -exec of xargs zou gebruiken doet hij wat jij zegt.

Sowieso is het directory, en niet map. map == windows praat.
Oeps, das waar ook. Ik grep vaak in bestanden, niet naar. En directory, das engels, geef ik eens een nederlandse term, is het niet goed :P.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • DeKaerften
  • Registratie: December 2007
  • Niet online
in plaats van

code:
1
find <directory> | grep -i <bestand>


kun je natuurlijk ook gewoon

code:
1
find <directory> -iname <bestand>


doen ;-)

Acties:
  • 0 Henk 'm!

Anoniem: 191133

En je kunt beter -print0 i.p.v -print gebruiken i.v.m unicode filenames. Dit kan serieus grote problemen geven.

Strict genomen is \r en/of \n namelijk een geldig teken in een filename en bijvoorbeeld xargs ziet dat als het begin van het volgende argument. Gebruik dus altijd -print0 bij find en dan -0 bij xargs zodat filenames op de null-byte worden gescheiden. In de POSIX standaard is heel duidelijk alleen '/' en de null-byte gereserveerd.

Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 00:29
MsG schreef op vrijdag 05 februari 2010 @ 20:21:
Leuke howto, maar misschien een beetje uitleg er omheen? Wat houdt die dot in
Die punt houdt in dat find moet beginnen in de huidige directory. Als je die punt vervangt voor een andere directory, begint hij daarin met zoeken.
Hero Of Time schreef op vrijdag 05 februari 2010 @ 20:35:
[...]

Oeps, das waar ook. Ik grep vaak in bestanden, niet naar. En directory, das engels, geef ik eens een nederlandse term, is het niet goed :P.
'Telefoongids'. :P Maar het was in MS-DOS al directory in de Nederlandse help, je kunt gewoon die term gebruiken. Folder/ map is Windows jargon. :)
Stacheldraht schreef op donderdag 04 februari 2010 @ 15:03:
[...]


Het moet natuurlijk een mini howto blijven ;) Maar als jij een mooie mini howto over xargs wilt schrijven dan is tweakers.net je best wel dankbaar :)
xargs en find gaan hand in hand. -exec is traag, want voor elke file wordt een nieuw proces gespawned. Het derde voorbeeld ziet er zo uit met xargs:
code:
1
find . -name "foo" -print | xargs rm -rf


En om te kijken wat je allemaal weggooit:
code:
1
find . -name "foo" -print | xargs echo





De -mindepth en -maxdepth command line switches zijn handig om de paddiepte aan te geven waarbinnen find moet zoeken.

[ Voor 70% gewijzigd door Jaap-Jan op 06-02-2010 11:11 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

  • swbr
  • Registratie: Maart 2009
  • Laatst online: 12:50
Stacheldraht schreef op donderdag 04 februari 2010 @ 12:55:
Bestanden of directories met de naam: "foo" zoeken en verwijderen.
find . -name "foo" -exec rm -rf {} \;
Voordat ik dit soort grappen uithaal, doe ik altijd eerst een "-exec ls -l {} \;". Je zult maar eens per ongeluk in / staan ;)

If you try and take a cat apart to see how it works, the first thing you have on your hands is a non-working cat. -DNA


Acties:
  • 0 Henk 'm!

  • ST10©DE
  • Registratie: Maart 2001
  • Laatst online: 13:13

ST10©DE

Dus.............

wat is "foo" ?

"Ik heb een hekel aan thuiswerken". Hendrik, 36 jaar, brandweerman.


Acties:
  • 0 Henk 'm!

  • MsG
  • Registratie: November 2007
  • Laatst online: 12:37

MsG

Forumzwerver

Een bestand of directory met de naam: "foo" zoeken.
Een map op Stacheldraht z'n pc.

Denk om uw spatiegebruik. Dit scheelt Tweakers.net kostbare databaseruimte! | Groninger en geïnteresseerd in Domotica? Kom naar DomoticaGrunn


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 05-06 23:13

CoolGamer

What is it? Dragons?

Een voorbeeld. Kan je vervangen door wat je zoekt.
Foo op Wikipedia. Foo/Bar/Foobar wordt wel vaker gebruikt als voorbeeld ergens voor.

[ Voor 26% gewijzigd door CoolGamer op 06-02-2010 00:48 ]

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

Anoniem: 26306

Kom kom kom, het is ook weer niet de bedoeling alleen maar dit topic te lezen en te verwachten dat je dan direct iets kunt.
Ga ofwel gewoon spelen met de mogelijkheden, of raadpleeg ook eens de manpage.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 05-06 22:44

Hero of Time

Moderator LNX

There is only one Legend

Jaap-Jan schreef op zaterdag 06 februari 2010 @ 00:35:
[...]
'Telefoongids'. :P Maar het was in MS-DOS al directory in de Nederlandse help, je kunt gewoon die term gebruiken. Folder/ map is Windows jargon. :)
Je gaat mij beschuldigen van verkeerde termen, en vervolgens doe je het zelf ook:
Jaap-Jan schreef op zaterdag 06 februari 2010 @ 00:35:
[...]
Die punt houdt in dat find moet beginnen in de huidige directory. Als je die punt vervangt voor een andere map, begint hij daarin met zoeken.
Doe het dan niet :P.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Pim.
  • Registratie: Mei 2001
  • Laatst online: 14-05 09:00

Pim.

Aut viam inveniam, aut faciam

Eensch met Cheatah, ga het vooral even lezen en proberen (en houd het on-topic) :)

"The trouble with quotes from the Internet is that you can never know if they are genuine." - Elvis Presley | Niet met me eens ? DM ME


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Files en directories zoeken die ouder zijn dan of even oud zijn als de file tweaker.
find . ! -newer "tweaker" -print
Klein detail, maar erg vervelend als je het gebruikt i.c.m. rm en dan ziet dat ook de meest recente versie is verwijderd ipv alleen de oudere ;)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

als je bestandsnamen met spaties hebt kun je ook het volgende trucje gebruiken:
find <whatever> | while read i; do <doe iets met $i>; done

oprecht vertrouwen wordt nooit geschaad


Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 00:29
Hero Of Time schreef op zaterdag 06 februari 2010 @ 11:04:
[...]

Je gaat mij beschuldigen van verkeerde termen, en vervolgens doe je het zelf ook:

[...]

Doe het dan niet :P.
Dank u. :P

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett

Pagina: 1