1.2k Aufrufe
Gefragt in Linux von
hi,

jemand eine idee, warum ich bei

find . -size -1M | wc -l

und bei

find . -size -1024k | wc -l

unterschiedliche ergebnisse bekomme?

es handelt sich um opensuse 42.1

thx.

9 Antworten

0 Punkte
Beantwortet von halfstone Profi (18.1k Punkte)
Hi tux-find,

was für ein Ergebnis bekommst du denn bei:

find . -size -1000k | wc -l


Ich hab Suse nicht installiert und kann es daher nicht ausprobieren.

Gruß Fabian
0 Punkte
Beantwortet von
hi fabian,

danke für die schnelle hilfe.

1000k bringt das gleiche ergebnis wie 1024k.

habe kurz einen freund angemailt, sein ubuntu verhält sich genauso.
scheint wohl nicht an der distribution zu liegen.


thx.
0 Punkte
Beantwortet von
Hallo, mir ist irgendwie der Sinn der Frage nicht ersichtlich.
Es muss ja einen Grund geben, warum du mit dem find so was testest oder bist du wach geworden und "Ohhh, ich muss es mit find testen"?

Zurück zu deiner Frage, ja es ist richtig, also die Werte sollen unterschiedlich sein:
find . -size -1M | wc -l
258

find . -size -1024k | wc -l
113651
Oder andere Suchparameter, wo die Dateien >1MB und <2MB sind
find . -size +1M -size -2M | wc -l
0

find . -size +10M -size -20M | wc -l
19
>10MB und <20MB

1000k bringt das gleiche ergebnis wie 1024k
find . -size -1000k | wc -l
113644


Gruß

find --help | grep size
-wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N


wc --help

-l, --lines Zeilenanzahl ausgeben
-L, --max-line-length die Länge der längsten Zeile ausgeben


man find
man wc
0 Punkte
Beantwortet von
@a3:

was will ich wissen:

wie viele dateien gibt es, die kleiner als 1 MB sind.

wie habe ich es gemacht:

mit find suchen und mit wc zählen

problem:

warum gibt es unterschiedliche ergebnisse bei 1M und 1024k.

meinen beschränktenm it-kentnisse zufolge sind doch 1024k = 1M.
0 Punkte
Beantwortet von
problem:

warum gibt es unterschiedliche ergebnisse bei 1M und 1024k.
Weil es ja Suchkriterien sind:
[list=A][*] 1MB
[*] 1024k[/list] und nicht
meinen beschränktenm it-kentnisse zufolge sind doch 1024k = 1M.


find . -size -1024k -exec ls -al {} \;

find . -size -1M -exec ls -al {} \;
0 Punkte
Beantwortet von
meinen beschränktenm it-kentnisse zufolge sind doch 1024k = 1M.


es ist grundsätzlich immer ein irrweg, etwas einfach "anzunehmen", es sei so.

es zählt nur das was in der doku zum find und seinen parametern drin steht:


-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. The size does not count indirect blocks, but it does count blocks in sparse files that are not actually allocated.
0 Punkte
Beantwortet von
@superguru

ich kenne es von festplatten, dass dort mit dem faktor 1000
gerechnet wird obwohl es eigentlich 1024 sein müsste. daher auch
immer die fragen, warum die 4tb-platte keine 4tb hat.

daher war das eine begründetet annahme ;)

aber warum sind 1024k nicht 1m? das kann ich deiner antwort leider
nicht entnehmen oder ich verstehe deine antwort nicht.


@find-deb3.16.7

und was ist der unterscheid zwischen den suchkriterien 1024k und
1m? beides sind soch in worten 1 megabyte, oder nicht?



@all:

noch ein beispiel:

find . -size -1024k | wc -l
ergibt 1077

find . -size -1M | wc -l
ergibt 550

find . ! -size +1M | wc -l
ergibt 1077

????? ich bin verwirrt
0 Punkte
Beantwortet von
und was ist der unterscheid zwischen den suchkriterien 1024k und
1m? beides sind soch in worten 1 megabyte, oder nicht?
Ich dachte, dass bewegte Bilder mehr sagen als geschriebene Wörter aus.
find . -size -1024k -exec ls -al {} \;
Ich müsste gefühlte 20 Bildschirme an die Wand übereinander tackern, um die Ausgabe im einen Stück ansehen zu können.
Falls du immer noch nicht begreifen kannst, was damit gemeint ist, hier:
find . -size -1024k -exec ls -ahl {} \;
Eine Datei die: 5,1K, 89K oder 1023K groß ist, ist kleiner als 1024K und das wird per "size -1024K" gefunden.
Hier geht es nicht um 1024k = 1M!
Der arme find tut was er soll und wird trotzdem nicht verstanden.

????? ich bin verwirrt
Höre mit dem Gabel eine Suppe zu löffeln auf und es passt wieder:-D
0 Punkte
Beantwortet von
es gibt auch noch das passende sprichwort:

wer mist misst misst mist

vllt hilft es das ganze in andere worte zu fassen:

der find -size parameter ist ein raster, das belegte blöcke einer datei als grundlage nimmt. setzt du als raster 1024-k-blöcke an dann kommt eben was anderes heraus als 1-M-blöcke

oder nochmal anders gesagt, das find. -size ist ungeeignet dafür wenn du dateien nach der größenangabe sieben willst die dir ls -la ausgibt. das sind 2 paar schuhe. netto und brutto sozusagen. vergleichbar mit der dunklen materie im weltall. eine datei wo gerade mal 3 buchstaben drin sind wird zwar mit 3 bytes angezeigt, belegt aber 4096bytes auf der platte. der unterschied von find -size und ls

klar ?
...