rekursives verschieben/löschen von mp3

hallo IceHouse,

Danke für den Hinweis; ist natürlich richtig.
Im Fall eines heruntergeladenen Webverzeichnisses vermutlich nicht so bedeutsam.
Allgemein gesehen sicher schon.
Andereseits hat xargs auch ein paar Tücken, die im Einzelfall zu unerwarteten/unerwünschten Ergebnissen führen können.
 
Zuletzt bearbeitet:
Moin,

IceHouse schrieb:
Sorry, das ich noch so spaet dazwischen gehe, aber "-exec" ist evil und das wollen wir nicht wirklich benutzen/ uns angewoehnen zu benutzen.

http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q="-exec" vs xargs

http://www.osxfaq.com/tips/unix-tricks/week49/tuesday.ws

Bei Dateisystemen und Abfragen von 5000 geht das vielleicht noch. Bei den FS die wir hier haben sind das vielleicht dann schon mal 200000 und dann liegt der Unterschied schnell im Stundenbereich.

Ätschibätsch, zu spät - darauf habe ich in #12 schon hingewiesen. :)

Im Ernst:
xargs ist nett, aber soweit ich das überblicke, sind viele Probleme (z.B. das des OPs) "nicht" zu lösen. ("Nicht" im Sinne von: Mit vertretbarem oder sinnvollem Aufwand).

Ich wüsste jedenfalls keine bessere Lösung für das Problem des OPs. Wenn du eine hast - her damit! :)


Hach. Die Kommandozeile erinnert mich immer an Legosteine. Alles eine Frage der Kombination, und ratzfatz wird aus einem langweiligen Lastwagen ein Monstertruck, mit dem man Schwesterchens Barbie überrollen kann... Ups... ist mir so rausgerutsch. Ich war's nicht. Sie lügt!
;-)

Gruß,
Ratti
 
Zuletzt bearbeitet von einem Moderator:
ratti schrieb:
...
Im Ernst:
xargs ist nett, aber soweit ich das überblicke, sind viele Probleme (z.B. das des OPs) "nicht" zu lösen. ("Nicht" im Sinne von: Mit vertretbarem oder sinnvollem Aufwand).
...
Warum nicht?
Ich sehe das Problem nicht.
 
maceis schrieb:
Warum nicht?
Ich sehe das Problem nicht.

Schreib mal, wie du's machen würdest.

Soweit ich das überblicke, hängt xargs die Parameter hinten an, deswegen geht sowas prima:

find blablabla | xargs rm [liste der Dateien]

...aber nicht sowas:

find blablabla | xargs cp [liste der Dateien] $zielordner


Oder soll ich etwa schon wieder in die manpage gucken? :)))

Gruß,
Ratti
 
ratti schrieb:
...
Oder soll ich etwa schon wieder in die manpage gucken? :)))
...
Könnte helfen, oder hast Du sie nicht kapiert? ;)

find /mirror -iname \*pdf -print0 | xargs -0 -J {} mv {} /pdf-Dateien
 
maceis schrieb:
Könnte helfen, oder hast Du sie nicht kapiert? ;)

find /mirror -iname \*pdf -print0 | xargs -0 -J {} mv {} /pdf-Dateien

Du Lümmel. Jaaaa, gut, steht drin. :)


Wenn wir schon dabei sind, nur für die Akten: In der GNU-Version von xargs gibt es kein -J, das Äquivalent ist dann wohl "--replace[=replace-str], -i[replace-str]".
Übrigens, {} ist sowieso default und braucht nicht angegeben werden.



Für cp verstehe ich es. Aber sowas dürfte doch trotzdem nicht gehen:

find -name "*.txt" | xargs mv {} {}.bak

Oder? (Sowas wie -print0 jetzt mal aussen vor. Das dann sowieso.)

Gruß,
Ratti
 
ratti schrieb:
...
Für cp verstehe ich es. Aber sowas dürfte doch trotzdem nicht gehen:

find -name "*.txt" | xargs mv {} {}.bak

Oder? (Sowas wie -print0 jetzt mal aussen vor. Das dann sowieso.)
Na klar geht so was; [stichel]steht auch in der manpage[/stichel]

Code:
% l
total 0
-rw-r--r--  1 martin  martin  0 30 Apr 09:45 file1
-rw-r--r--  1 martin  martin  0 30 Apr 09:45 file2
-rw-r--r--  1 martin  martin  0 30 Apr 09:45 file3
-rw-r--r--  1 martin  martin  0 30 Apr 09:45 file4
% find . -name file\*  | xargs -I % mv % %.old
% l
total 0
-rw-r--r--  1 martin  martin  0 30 Apr 09:47 file1.old
-rw-r--r--  1 martin  martin  0 30 Apr 09:47 file2.old
-rw-r--r--  1 martin  martin  0 30 Apr 09:47 file3.old
-rw-r--r--  1 martin  martin  0 30 Apr 09:47 file4.old
Allerdings kann man dann vermutlich gleich mit 'find -exec' arbeiten.
Müsste man direkt mal testen, was schneller geht.
 
maceis schrieb:
Na klar geht so was; [stichel]steht auch in der manpage[/stichel]

Nein, nicht in der GNU-Version. Das kann das nämlich nicht. Bzw.: Es kann es doch - aber anders. Drauf gekommen bin ich nur, weil dein Besipiel bei mir nicht funktionierte.

-I gibt es nicht.
Es gibt aber -i, was wir auch im Vorangegangenen Beispiel gesetzt hatten. Bei GNU ist es so, daß -i automatisch -l 1 setzt - also immer nur mit 1 Parameter ausführen. Damit wird {} identisch zu %.

BSD-xargs ist da offensichtlich differenzierter und somit schneller.

Hey, wieder was sehr interessantes gelernt. Danke!

Gruß,
Ratti
 
ratti schrieb:
Nein, nicht in der GNU-Version
Das kann das nämlich nicht.
...
Nun ja.
Eigentlich sind wir hier im Forum "Mac OS X - Unix".
Da sollte man auch die Mac OS X manpages lesen.
Macht aber nichts ;).
ratti schrieb:
BSD-xargs ist da offensichtlich differenzierter und somit schneller....
Wie meinst Du das?
ratti schrieb:
Hey, wieder was sehr interessantes gelernt. Danke!
...
Schön, dass wir darüber gesprochen haben :D.
 
maceis schrieb:
Nun ja.
Eigentlich sind wir hier im Forum "Mac OS X - Unix".
Da sollte man auch die Mac OS X manpages lesen.
Macht aber nichts ;).

Ich wollte nicht extra einen remote login in die Firma machen... He, und watt is mit fink? (rausred)

maceis schrieb:
Wie meinst Du das?

GNU-xargs unterscheidet nicht zwischen -i und -I. Es kennt nur -i und setzt dabei automatisch -l 1, was die gleiche Wirkung hervorruft. Wie Du vermutet hast: xargs -l 1 ist vermutlich genau so schnell wie find -exec, weil es für jede Fundstelle einen Aufruf durchführt.

Gruß,
Ratti
 
Zurück
Oben Unten