[Solaris 10] find met symbolic links en dan openen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
Ik heb geen unix god en heb de hele dag al op internet liggen pluizen wat zou kunnen werken, maar ben er niet uit.

In het een map met submappen en symbolic links naar andere mappen. Ik wil alle files met een specifieke openen.

Iin geval van extensie txt
code:
1
find -L . | grep txt

Dit geeft de goede lijst
alleen weet ik niet hoe ik deze lijst in bijv nedit stop.

code:
1
find -L . | grep txt -exec nedit {} \;

Werkt niet

code:
1
find -name ...

Werkt ook niet (zal wel aan Solaris liggen)

if broken it is, fix it you should


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 11:10

Hero of Time

Moderator LNX

There is only one Legend

Je wilt meerdere bestanden openen met nedit? Houd je er ook rekening mee dat nedit meerdere malen start, met mogelijk effect dat je find pas verder gaat als je eerste editor gesloten is, de tweede opent, weer wacht, en zo verder totdat je alle bestanden hebt gehad?

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • swbr
  • Registratie: Maart 2009
  • Laatst online: 03-10 19:03
code:
1
find -L . -name \*.txt -exec nedit {} \;


Eerst even testen of het lijstje wat het oplevert klopt door de -exec even weg te laten.

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!

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
Hero Of Time schreef op woensdag 03 oktober 2012 @ 12:57:
Je wilt meerdere bestanden openen met nedit? Houd je er ook rekening mee dat nedit meerdere malen start, met mogelijk effect dat je find pas verder gaat als je eerste editor gesloten is, de tweede opent, weer wacht, en zo verder totdat je alle bestanden hebt gehad?
Niet aan gedacht....

Wat als ik all files, welke ik open wil hebben in bestand heb:
code:
1
2
3
./dir1/dir2/file1.txt
./dir1/dir2/file2.txt
./dir2/file3.txt

Kan iet zoiets ineens openen?

if broken it is, fix it you should


Acties:
  • 0 Henk 'm!

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
Antaresje schreef op woensdag 03 oktober 2012 @ 12:59:
code:
1
find -L . -name \*.txt -exec nedit {} \;


Eerst even testen of het lijstje wat het oplevert klopt door de -exec even weg te laten.
Dit werkt idd.

Nu om het te snappen:
- Wat doet de -name?
- Waarom een \ voor de *.txt

if broken it is, fix it you should


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 11:10

Hero of Time

Moderator LNX

There is only one Legend

-name zoekt op de naam, \ voor de * is escape teken, zodat het als wildcard wordt gebruikt voor 't zoeken, ipv dat find er zelf iets mee gaat doen als een of ander argument. Draai 't maar eens zonder de \, dan zie je wat er anders gebeurt (error melding).

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • swbr
  • Registratie: Maart 2009
  • Laatst online: 03-10 19:03
elgringo schreef op woensdag 03 oktober 2012 @ 13:02:
[...]


Dit werkt idd.

Nu om het te snappen:
- Wat doet de -name?
- Waarom een \ voor de *.txt
-name <bestandsnaam> geeft alleen resultaat als <bestandsnaam> gevonden wordt. Kijk ook eens in de man pages van find, daar staat het netjes in (commando: man find)

Om te zorgen dat de * als een wildcard geinterpreteerd wordt door het find commando (en dus niet letter als karakter van een bestandsnaam) moet je hem escapen, dat doe je met een backslash. je zou ook "*.txt" kunnen doen, maar een echte Unix expert escapet alles met backslashes ;)

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!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 02-10 22:42

CAPSLOCK2000

zie teletekst pagina 888

Omdat het een moeilijk onderwerp is en ik mijn voorgangers niet echt duidelijk vind, hierbij mijn poging om het uit te leggen:

* staat normaal gesproken voor 'alle bestanden', en het systeem zal die * vervangen door een lijst met bestandsnamen. Dat wil je hier niet, find moet zelf aan de slag met die *, vandaar de escape.

This post is warranted for the full amount you paid me for it.

Pagina: 1