Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: commandline "find"  (gelezen 3619 keer)

Offline evarie

  • Lid
  • Steunpunt: Nee
commandline "find"
« Gepost op: 2009/11/24, 20:46:49 »
Heeft iemand ervaring met het commando "find"?

Kan je wat voorbeelden geven hoe je een tekst bestand vind?

Offline tim_vb

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #1 Gepost op: 2009/11/24, 20:48:56 »
je kunt naar mijn mening beter het comando

" locate "  gebruiken als je snel iets wilt vinden in ubuntu

Mvg .Tim

Offline evarie

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #2 Gepost op: 2009/11/24, 20:53:31 »
Ondertussen vond ik deze regel:
'find / -name readme.txt -print'


Dus je adviseert om het commando "locate" te gebruiken.
Heb je een voorbeeld?
locate demo.bin
Is er nog meer mogelijk met "locate" ?
Ik vond dit voorbeeld op internet. Wil je dat toelichten? Dank je wel.

Dan  nog een link met een lijstje commando's :
http://www.linuxh0st.net/?pagina=linux_commands

Offline tim_vb

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #3 Gepost op: 2009/11/24, 21:03:34 »
locate bestand

vb;
tim@toplap:~$ locate frostwire
/home/tim/.frostwire4.18
/home/tim/.frostwire4.18/.AppSpecialShare
/home/tim/.frostwire4.18/.NetworkShare
/home/tim/.frostwire4.18/createtimes.cache
/home/tim/.frostwire4.18/downloads.dat
....

dit gaat overzichtelijk en zeer snel door al uw bestanden zoeken

*edit

het comando find kun je gebruiken op volgende wijze:

find -name  test.txt

vb;
tim@toplap:~$ find -name test.txt
./android-sdk-linux_x86-1.5_r2/tools/test.txt
./Bureaublad/bluej/examples/file-reader/test.txt
./bluej/examples/file-reader/test.txt



man pages kun je van elk commando opvragen (deze geven uitleg over hoe je het gebruikt en wat een comando doet)

man locate
of
man find

om op uw lijstje met commando's terug te komen je kunt ook commando's combineren met een | er tussen te zetten

vb; ls -l | grep test

tim@toplap:~$ ls -l | grep test
drwxr-xr-x  2 tim     tim          4096 2009-08-12 23:57 test
-rw-r--r--  1 root    root         9587 2009-10-12 18:43 test-01.cap
-rw-r--r--  1 root    root         2419 2009-10-12 18:43 test-01.csv
-rw-r--r--  1 root    root         3641 2009-10-12 18:43 test-01.kismet.csv
-rw-r--r--  1 root    root        19946 2009-10-12 18:43 test-01.kismet.netxml
-rwxr-xr-x  1 tim     tim    4194304000 2009-06-07 16:11 test.img

« Laatst bewerkt op: 2009/11/24, 21:14:58 door tim_vb »

Offline ivo

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #4 Gepost op: 2009/11/24, 21:04:34 »
je kunt naar mijn mening beter het comando

" locate "  gebruiken als je snel iets wilt vinden in ubuntu

Mvg .Tim

Dan moet je wel met enige regelmaat "updatedb" laten draaien.
find werkt op elke UNIX machine, dus als je weet hoe dat werkt ben je beter af.
There are only 10 types of people in the world; those who understand binary and those who don't.

Offline evarie

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #5 Gepost op: 2009/11/24, 21:24:01 »
find is een van de moeilijkste commando's.
Daarom heb ik het hier ook gevraagd. Ik hoop dat als ik dit snap, dat ik dan ook andere commando's kan leren.
Ik heb een tutorial gevonden in het engels:
http://content.hccfl.edu/pollock/unix/findcmd.htm

Nu zoek ik er nog een in het Nederlands.

Offline markba

  • Lid
    • http://markbaaijens.nl/
  • Steunpunt: Ja
Re: commandline "find"
« Reactie #6 Gepost op: 2009/11/24, 21:31:32 »
Het commando locate werkt niet buiten het bestandsysteem om, bv in mounts naar server-shares e.d. Erg beperkt dus.

Het commando updatedb dat idd benodigd is om locate te voorzien van een index, wordt automatisch (op de achtergrond) geactiveerd via cron. Het betekent wel dat je per definitie altijd achterloopt (totdat updatedb heeft gedraaid).

Offline evarie

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #7 Gepost op: 2009/11/24, 21:56:58 »
Het valt me tegen om dit te begrijpen:

find / -type f -exec grep -l  {} \;

Offline tim_vb

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #8 Gepost op: 2009/11/24, 22:07:09 »

-exec  : grep  searches the named input FILEs = uitgezonderd

-exec command ;
              Execute  command;  true  if 0 status is returned.  All following
              arguments to find are taken to be arguments to the command until
              an  argument  consisting of `;' is encountered.  The string `{}'
              is replaced by the current file name being processed  everywhere
              it occurs in the arguments to the command, not just in arguments
              where it is alone, as in some versions of find.  Both  of  these
              constructions might need to be escaped (with a `\') or quoted to
              protect them from expansion by the shell.  See the EXAMPLES sec‐
              tion for examples of the use of the -exec option.  The specified
              command is run once for each matched file.  The command is  exe‐
              cuted  in  the starting directory.   There are unavoidable secu‐
              rity problems surrounding use of the -exec  action;  you  should
              use the -execdir option instead.

       -exec command {} +
              This  variant  of the -exec action runs the specified command on
              the selected files, but the command line is built  by  appending
              each  selected file name at the end; the total number of invoca‐
              tions of the command will  be  much  less  than  the  number  of
              matched  files.   The command line is built in much the same way
              that xargs builds its command lines.  Only one instance of  `{}'
              is  allowed  within the command.  The command is executed in the
              starting directory.


dat zegt de manpages  volgens mij gebruik je bijde -exec mogelijkheden door elkaar
in dat comando
« Laatst bewerkt op: 2009/11/24, 22:11:47 door tim_vb »

Offline Johan van Dijk

  • Administrator
    • johanvandijk
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #9 Gepost op: 2009/11/24, 22:56:14 »
Het valt me tegen om dit te begrijpen:

find / -type f -exec grep -l  {} \;

Dat is ook wel een vreemd commando, zoals dat er nu staat.
Wat het doet:
Het zoekt je hele bestandssysteem af naar bestanden. (en dat zijn er veeeel, want met dit commando "vindt" hij alle bestanden)
Bij ieder bestand dat hij vindt, roept hij grep aan, om in het bestand te zoeken.

/: De locatie waarin gezocht moet worden
-type f: je wil alleen bestanden zien (dus geen mappen, etc.)
-exec commando: dit commando wordt uitgevoerd
{}: hier komt de gevonden bestandsnaam te staan, dus als een optie voor het commando
\;: dit geeft het einde van het commando aan

Wat er nog mist in jouw voorbeeldcommando is waarop je wil zoeken, bijvoorbeeld op bestandsnaam of leeftijd van het bestand.
En de grep-opdracht is ook niet erg zinnig.

Offline AptlyNamed

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #10 Gepost op: 2009/11/28, 13:33:21 »
ik haal de volgorde van argumenten tussen grep/find en vergelijkbare commandos ook af en toe door de war. Daarom heb ik een paar aliases aangemaakt die het voor mij versimpelen.

aan /etc/profiles.bash heb ik deze regels toegevoegd:
# bestandsnaam zoeken in huidige  en onderliggende mappen
function fnd {
find . -iname "*${1}*"
}

# woorden zoeken in tekst- en configuratiebestanden
# (niet openoffice of andere niet-tekst bestanden)
# in huidige  en onderliggende mappen
function grp {
egrep -ri  ''"${1}"'' .
}
(Je moet opnieuw inloggen voordat dit effect heeft)

Als ik bestand zoek dat 'xyz' in de naam heeft in /home/user1/bla
dan typ ik:
cd /home/user1/bla
fnd xyz


Als ik bestand zoek dat 'eenwoord' in de inhoud heeft in /home/user1/bla
dan typ ik:
cd /home/user1/bla
grp xyz

Offline track

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #11 Gepost op: 2009/11/28, 14:02:18 »
Hoi evarie,

kun je nog een keer duidelijk beschrijven wat je eigenlijk wilt doen ?

Want ik begrijp nog niet waarom je net het commando "find" nodig hebt.
(ik zelf heb het nog niet gebruikt, en ik heb al wat scripten geschreven)

Zoek je de naam van een bestand of de inhoud ?
Zoek in een bepaalde map of in de gehele mappenboom ?

track
« Laatst bewerkt op: 2009/11/28, 14:05:21 door track »

Offline Rachid

  • Vertaalteam
    • rachidbm
    • Mijn blog
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #12 Gepost op: 2009/11/28, 14:21:48 »
(Je moet opnieuw inloggen voordat dit effect heeft)
Nee hoor. Je hoeft alleen maar die 'profile' opnieuw in te laden. Dat kan ook middels:
. /etc/profiles.bashof een nieuwe terminal openen...
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline evarie

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #13 Gepost op: 2009/11/28, 18:38:01 »
Hoi evarie,

kun je nog een keer duidelijk beschrijven wat je eigenlijk wilt doen ?

Want ik begrijp nog niet waarom je net het commando "find" nodig hebt.
(ik zelf heb het nog niet gebruikt, en ik heb al wat scripten geschreven)

Zoek je de naam van een bestand of de inhoud ?
Zoek in een bepaalde map of in de gehele mappenboom ?

track

Het is niet makkelijk om zelfstandig commando's met schakelaars te creëren. Sommige Engelse woorden kan ik niet goed vertalen.
Ik heb een boek waar informatie staat over Unix. Het boek is gericht op een terminal met commandline.
"find" is een van de moeilijkste commando's staat in het boek UNIX van Thomassen.
Daarom heb ik het hier ook gevraagd. Ik hoop dat als ik dit snap, dat ik dan ook andere commando's kan leren.
Het niet populaire commandline heeft toch wel zo zijn nut en noodzaak, handige en verstandige commando's.

Waar ik nog niet aan gedacht had, is als je SSH gebruikt. Dan moet je ook commando's weten.
« Laatst bewerkt op: 2009/11/28, 19:27:58 door evarie »

Offline ivo

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #14 Gepost op: 2009/11/29, 11:56:35 »
.

Waar ik nog niet aan gedacht had, is als je SSH gebruikt. Dan moet je ook commando's weten.

Niet als je X-forwarding aanzet op je ssh verbinding. Dan kun je gewoon je X-applicaties door de tunnel trekken.
Het blinkt niet uit in snelheid, maar het kan wel.

Maar het is sowieso ALTIJD handig om de commandline te kennen.
There are only 10 types of people in the world; those who understand binary and those who don't.

Offline ivo

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #15 Gepost op: 2009/11/29, 12:00:48 »

"find" is een van de moeilijkste commando's staat in het boek UNIX van Thomassen.

Haha, dan beschrijft die persoon zeker niet de "regular expressions" in zijn boek.
There are only 10 types of people in the world; those who understand binary and those who don't.

Offline evarie

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #16 Gepost op: 2009/11/29, 15:39:26 »
Ja, regular expressions als ik het goed begrijp dan ben ik daar wel naar op zoek.
Graag wil ik weten wat de doorsnee het zelfde is van alle commando's bij elkaar met de uitzonderingen op de laatste plaats.
Dus wat is dan de basis structuur van de commando find?

In iedergeval de basis regel is dat een commando altijd begint, en daar achter de schakelaars.
Er zijn ook schakelaars die in meerdere commando's het zelfde betekenen en het zelfde doen.
tot zo ver...

Offline track

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #17 Gepost op: 2009/11/29, 17:02:30 »
Misschien kijk je hier nog een keer:  http://forum.ubuntu-nl.org/programmeren/commando's-terminalvenster-leren/
(daar vind je ook de relevante links)

Verder raad ik je eerder aan om gewoon meteen je eigen progjes te beginnen.  Dan weet je gauw wat je nog mist
en welke commando's je nog zoekt. 
En dan zijn ook voor mij nog steeds de man-pages ( man find  rsp.  http://linux.die.net/man/ )
de ultieme referentie.

track

Offline AptlyNamed

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #18 Gepost op: 2009/11/29, 17:05:37 »
Ja, regular expressions als ik het goed begrijp dan ben ik daar wel naar op zoek.
Graag wil ik weten wat de doorsnee het zelfde is van alle commando's bij elkaar met de uitzonderingen op de laatste plaats.
Dus wat is dan de basis structuur van de commando find?

In iedergeval de basis regel is dat een commando altijd begint, en daar achter de schakelaars.
Er zijn ook schakelaars die in meerdere commando's het zelfde betekenen en het zelfde doen.
tot zo ver...

Wat je commandos noemt, zoals 'find' , 'grep' 'ls' zijn in feite gewoon programmaatjes net als 'firefox' of 'amarok', en ze staan in /sbin/ , /bin en /usr/bin. Het verschil met firefox is dat ze geen window laten zien maar alleen maar tekst in de terminal teruggeven. De makers van 'find' etc. kunnen zelf bepalen wat voor schakelaars ('arguments' in het engels), erachter gezet kunnen worden, hoe ze heten en in welke volgorde. Er zit dus niet een bepaalde logica achter: het kan bij 'find' precies andersom zijn dan bij een 'grep'. Gewoon een kwestie van even de manpage voor die specifieke tool lezen, zoals 'man find'. Als je er dan nog niet uitkomt dan google je b.v. op 'find commando voorbeelden', of je zoekt een boek met voorbeelden.

Als je meerdere commandos aan elkaar wilt plakken dan kan dat met bash. Regular expressions is een taaltje op zich om te zoeken (en/of vervangen) in tekst.
« Laatst bewerkt op: 2009/11/29, 17:26:40 door AptlyNamed »

Offline karlhungus

  • Lid
  • Steunpunt: Nee
Re: commandline "find"
« Reactie #19 Gepost op: 2009/12/12, 10:43:56 »
Dat is ook het mooie van met de commandline werken. Je kan het allemaal doen zoals je zelf het prettigst vind. En is het er niet kan je het zelf maken.
Er is alleen wel een basis nodig. Heb zelf lang zitten rommelen, maar het licht pas echt gezien toen ik zon LPI 1 en 2 cursus heb gedaan. Een goed basisboek commandline linux voor beginners halen. lezen oefeningen doen en in 1x zie je dan de verbanden en snap je niet dat het ooit zo ingewikkeld leek. man pages had ik ook pas wat aan toen ik de basis onder de knie had. Probleem met die manpages is vaak dat ze gemaakt zijn door programmeurs. Geen goeie combinatie over het algemeen. Maargoed ik dwaal af.

Wat ik zelf naast find en locate vaak gebruik is het grep -nHR textnaam . commando. Om text te zoeken in bestanden. Voorbeeld ik zit in mn /var/www directory en ik wil zoeken naar het woord mysqlpasswd dan doe ik vanuit de folder /var/www  grep -nHR mysqlpasswd . en dan zoek ik vanaf /var/www  alle directorys en bestanden door opzoek naar het woord mysqlpasswd. Kan erg handig zijn als je opzoek ben naar content in een bepaalde config