[find] twee acties uitvoeren op bestand

Pagina: 1
Acties:

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Topicstarter
Ik heb een map met bestanden die ik een map omhoog wil verplaatsen; waarna ik er een symbolic link naar wil maken in de map waar de bestanden stonden.

Dus ik heb /home/blaat/dir/bestand1 die wil ik allereerst verplaatsen naar /home/blaat/ en daarna wil ik een symlink opnemen als /home/blaat/dir/bestand1 die verwijst naar /home/blaat/bestand1. Nu dacht ik dat dat wel mogelijk moest zijn op de volgende manier:

code:
1
find -exec 'mv {} .. | ln .{} -s' \;


maar dan krijg ik
code:
1
find: mv ./bestand1 .. | ln ../bestand1 -s: No such file or directory


Overigens werkt het commando wel op losse files :?

Tips hoe ik dit op kan lossen? Of moet ik een shell script schrijven dat eerst een move en daarna een ln doet :?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 02-05 18:38

deadinspace

The what goes where now?

Een map? Wat is dat? O-)

Als je 'mv {} .. | ln . {} -s' opgeeft, dan zal hij proberen het programma 'mv {} .. | ln . {} -s' uit te voeren, maar jij hebt geen programma dat zo heet (hoop ik) :)
Je moet de programma-naam en de argumenten als losse argumenten doorgeven. Dus:
code:
1
2
fout: -exec 'mv {} ..' \;
goed: -exec mv '{}' .. \;

Op die manier is het niet mogelijk om meerdere commando's in één keer uit te voeren (immers, tekens als ; en | worden al in de shell geinterpreteerd, dat wil je niet, dus dan escape je ze. Maar als ze geescaped zijn, dan voert find ze gewoon als argumenten aan het programma dat je aanroept).

Maar dat is niet erg, je kunt -exec meerdere keren in hetzelfde find commando gebruiken:
code:
1
find -type blaat -exec command1 \; -exec command2 \;

Overigens moet je met ln eerst de source geven en dan de target, dus
code:
1
2
goed: ln -s {} .
foud: ln -s . {}

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Topicstarter
aha; bedankt! :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate