WinFuture-Forum.de: Find + Exec - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Linux
Seite 1 von 1

Find + Exec


#1 Mitglied ist offline   Kingbonecrusher 

  • Gruppe: aktive Mitglieder
  • Beiträge: 541
  • Beigetreten: 16. März 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 01. April 2008 - 11:20

Habe versucht paar Dateien zu suchen. Diese will ich dann auf einen 2ten Datenträger kopieren, jedoch soll der Dateiname eine Zufallszahl sein, daher eigentlich:

find daten/ -iname *doc* -exec cp {} $RANDOM \;


Jedoch ist es so,als ob die Systemvariable $RANDOM nur einmal aufgelöst wird. Ich habe nur eine Datei.

Folgendes klappt ohne weitere Probleme, jedoch mir dem originalen Namen
find daten/ -iname *doc* -exec cp {} . \;

Eingefügtes Bild
0

Anzeige



#2 Mitglied ist offline   ph030 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.132
  • Beigetreten: 14. Juli 04
  • Reputation: 36
  • Geschlecht:unbekannt

geschrieben 01. April 2008 - 15:57

Zitat

Jedoch ist es so,als ob die Systemvariable $RANDOM nur einmal aufgelöst wird.
Das ist korrekt und eine der Sachen, die mich von der Bash weggetrieben haben, denn das habe ich nie gelöst bekommen(mit der ZSH funktioniert das einwandfrei) :/
Workaround wäre, die gefundenen Dateinamen in ein Array zu packen, ein weiteres Array mit Zufallswerten in der Länge des anderen Arrays zu bauen und dann beide in einer Schleife zu verbinden und abzuarbeiten. Sehr ugly, das gebe ich zu.

Du kannst gerne mal weitergoogeln, wenn du eine bessere Lösung findest, wäre ich daran interessiert, ansonsten würde ich dir empfehle, dass gewünschte gleich in Perl/Python/Ruby/... zu erledigen.
0

#3 Mitglied ist offline   Kingbonecrusher 

  • Gruppe: aktive Mitglieder
  • Beiträge: 541
  • Beigetreten: 16. März 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 01. April 2008 - 17:01

Hi,

ein Kollege aus dem Debianforum hat eine passable Lösung. Er meint, ich solle das exec command doch einfach in einer eigenen Shell ausführen:

find daten/ -iname *doc* -exec bash -c 'cp {} $RANDOM.doc' \;


Aber soweit ich weiss, gibt es die Zufallsvariable nur nicht in jeder Shell, deswegen ein weiterer Tipp:

find daten/ -iname *doc* -exec sh -c 'cp -p {} `mktemp XXXXXXXXX`.doc' \;


Und wer noch sortieren will kann ja noch -size +250k etc in den Suchbefahl einbinden. Erspart bei einigen hundert Dokumenten ein Heidenaufwand.

Dieser Beitrag wurde von Kingbonecrusher bearbeitet: 01. April 2008 - 17:06

Eingefügtes Bild
0

#4 Mitglied ist offline   ph030 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.132
  • Beigetreten: 14. Juli 04
  • Reputation: 36
  • Geschlecht:unbekannt

geschrieben 01. April 2008 - 17:07

Stimmt, mktemp wäre eine Möglichkeit, daran hab ich nicht gedacht, insofern danke für den Hinweis - ich für meinen Teil bleibe aber lieber bei der ZSH :rolleyes:
0

#5 Mitglied ist offline   Kingbonecrusher 

  • Gruppe: aktive Mitglieder
  • Beiträge: 541
  • Beigetreten: 16. März 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 02. April 2008 - 06:46

Ja, die zsh fetzt schon, grml benutzt diese als Standardshell. Daher kenne ich die zsh schon ein wenig seit grml 0.8, also schon einige Zeit. Die untere Infoleiste, sowie die Auswahl beim drücken der TAB Taste (Befehlsvervollständigung) sind einfach Klasse!

mfg
Eingefügtes Bild
0

#6 Mitglied ist offline   ph030 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.132
  • Beigetreten: 14. Juli 04
  • Reputation: 36
  • Geschlecht:unbekannt

geschrieben 02. April 2008 - 13:36

Ist ja nicht so, dass das alle "geilen" Möglichkeiten wären ;) ZSH-Wiki und ZSH-Lovers hat noch einige gute Tipps - für die, die sie noch nicht kennen. Allein schon :r, :e und :t, was ich für deren Funktionalität früher immer fr Hacks mit der BASH machen mußte und die doch nichtmal annähernd so gut waren...
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0