Hi, eine kleine Ungereimtheit (stöhn!): Wenn ich mit find ./ -name "*.dat" -exec cp {} /cdimg \; rekursiv alle .dat-Dateien aus dem Verzeichnisbaum ab akt. Verzeichnis rauskopiere, so passt alles bestens. Wenn ich aber die Dateien, die eine bestimmte Größe unterschreiten auflisten oder löschen will, dann: find ./ -name "*.dat" -size 20000b -print \; find: paths must precede expression Usage: find [path...] [expression] Da kann ich einfache, doppelte, gar keine Anführungsstriche wählen, dat haut nicht hin. Googlen half nix, da waren Tips, die allesamt nicht funkten. Und nun? Bernhard
Bernhard Derks schrieb:
eine kleine Ungereimtheit (stöhn!):
Wenn ich mit
find ./ -name "*.dat" -exec cp {} /cdimg \;
rekursiv alle .dat-Dateien aus dem Verzeichnisbaum ab akt. Verzeichnis rauskopiere, so passt alles bestens.
Wenn ich aber die Dateien, die eine bestimmte Größe unterschreiten auflisten oder löschen will, dann:
find ./ -name "*.dat" -size 20000b -print \; find: paths must precede expression Usage: find [path...] [expression]
1. Das \; ist zu viel. Das brauchst Du nur bei der Option -exec, um das Ende der Befehlskette zu markieren. 2. Du findest momentan nur Dateien, die auf .dat enden und exakt eine Groesse von 20000b haben. Wenn Du Dateien finden willst, die auch kleiner sind, dann solltest Du -20000b angeben. Wenn es nicht auf Gross- und Kleinschreibung ankommt, dann waere evtl. find . -iname "*.dat" -type f -size -10k -print in etwa das, was Du suchst. CU, Th.
Hallo, Am Thu, 25 Sep 2003, Bernhard Derks schrieb:
Wenn ich aber die Dateien, die eine bestimmte Größe unterschreiten auflisten oder löschen will, dann:
find ./ -name "*.dat" -size 20000b -print \; ^[1] ^^[2] find: paths must precede expression Usage: find [path...] [expression]
[1] willst du wirklich "blocks" a 512byte? Nicht 'c'? ==== -size n[bckw] File uses n units of space. The units are 512-byte blocks by default or if `b' follows n, bytes if `c' ^^^^^^ ^^ ^ ^! follows n, kilobytes if `k' follows n, or 2-byte words if `w' follows n. ==== [2] Das ist nach einem '-print' falsch und wird als Pfad interpretiert, was die Fehlermeldung erklaert. -dnh --
Recovery ist, wenn Kunden anrufen und nach solchen Leuten verlangen. Nun, ohne deinen Namen zu sehr verhunzen zu wollen.... aber es klingt bestimmt lustig, wenn du dich einem Mann vorstellst, der auch Dirk heißt. -- Dirk Nimmich und Adrian Knoth in dasr
"BD" == Bernhard Derks schrieb am Thu, 25 Sep 2003 19:41:53 +0200: > Wenn ich mit
> find ./ -name "*.dat" -exec cp {} /cdimg \; > rekursiv alle .dat-Dateien aus dem Verzeichnisbaum ab akt. > Verzeichnis rauskopiere, so passt alles bestens. > Wenn ich aber die Dateien, die eine bestimmte Größe > unterschreiten auflisten oder löschen will, dann: > find ./ -name "*.dat" -size 20000b -print \; find: paths must > precede expression Usage: find [path...] [expression] > Da kann ich einfache, doppelte, gar keine Anführungsstriche > wählen, dat haut nicht hin. > Googlen half nix, da waren Tips, die allesamt nicht funkten. Probier's mal damit: find ./ -name "*.dat" -size 20000b -print den \ ; brauchst Du nur dann wenn Du Ergennis von find mit -exec weiterverarbeitest, um den Exec-befehl abzuschließen -- Konstantin Malakhanov malakhanov@gmx.de +49/(0)2233/610830
Am 25.09.2003 um 20:11 Uhr schrieb Peter Geerds:
Am 25.09.2003 um 19:41 Uhr schrieb Bernhard Derks:
find ./ -name "*.dat" -size 20000b -print \;
^^Lass das doch einmal weg, wenn du in dem Verzeichnis/Unterverzeichnis bist, wo du die Dateien suchst. Müsste eigentlich auch funktionieren.
Oh - gerade gemerkt: am Ende deiner Zeile steht \; -das wird als Pfad interpretiert. Besser wäre wahrscheinlich ';', wobei ich vermute, dass das eh überflüssig ist. cu PeeGee
Hallo, Am Thu, 25 Sep 2003, Peter Geerds schrieb:
Am 25.09.2003 um 20:11 Uhr schrieb Peter Geerds:
Am 25.09.2003 um 19:41 Uhr schrieb Bernhard Derks:
find ./ -name "*.dat" -size 20000b -print \;
^^Lass das doch einmal weg, wenn du in dem Verzeichnis/Unterverzeichnis bist, wo du die Dateien suchst. Müsste eigentlich auch funktionieren.
Oh - gerade gemerkt: am Ende deiner Zeile steht \; -das wird als Pfad interpretiert. Besser wäre wahrscheinlich ';', wobei ich vermute, dass das eh überflüssig ist.
Ja. Da wird das dann einfach von der shell(!) als Befehlstrenner ausgewertet. 'find' bekommt das dann ueberhaupt nicht mehr zu sehen. -dnh -- In short, I want to show people what real power is. Power is not having to bomb cities flat to bring mass murderers to justice. Power is being able to determine guilt or innocence and it comes from being willing to actually act as if the principles you espouse matter to you even when they're inconvenient. -- Jonathan Guthrie in asr
* On Thu, 25 Sep 2003 at 20:11 +0200, Peter Geerds wrote:
Am 25.09.2003 um 19:41 Uhr schrieb Bernhard Derks:
find ./ -name "*.dat" -size 20000b -print \;
^^Lass das doch einmal weg, wenn du in dem Verzeichnis/Unterverzeichnis bist, wo du die Dateien suchst. Müsste eigentlich auch funktionieren.
Ja. Bei einem GNU find. Das nächste BSD wird Dich bei Abwesenheit des Suchpfades mit Fehlermeldungen quälen :-) /apm -- GPG welcome, request public key: mailto:adalbert+key@lopez.at
Am Donnerstag 25 September 2003 19:41 schrieb Bernhard Derks:
Hi,
Wenn ich aber die Dateien, die eine bestimmte Größe unterschreiten auflisten oder löschen will, dann:
find ./ -name "*.dat" -size 20000b -print \; find: paths must precede expression Usage: find [path...] [expression]
Dankedanke an alle, find . -name "*.dat" -size -20k -printf '%P %s \n' hats gerichtet!! Bernhard
participants (7)
-
Adalbert Michelic
-
Bernhard Derks
-
David Haller
-
Konstantin Malakhanov
-
Peter Geerds
-
Peter Wiersig
-
Thomas Hertweck