Kirjoittaja Aihe: Tiedostojen poistaminen ei onnistu - bash: /bin/rm: Argument list too long  (Luettu 1716 kertaa)

Ux64

  • Käyttäjä
  • Viestejä: 586
    • Profiili
Tämä tuli eteen yllätyksenä.

Ainakin aikaisemmin kun valitin Nautiluksen sekoilusta suurilla tiedostomäärillä minulle sanottiin että käytä komentoriviä.

No päätin sitten käyttää komentoriviä ja lopputulos oli varsin huvittava.

Koodia: [Valitse]
~/tmp/file-test$ rm test_file_*
bash: /bin/rm: Argument list too long

Mitenhän tuollainenkin ongelma on päässyt jäämään tuonne. Lienee joku legacy tekniikkaan perustuva ongelma.

SuperOscar

  • Käyttäjä
  • Viestejä: 4063
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Tavallaan on, tavallaan ei... Komentorivin pituudella on maksimi, ja jos tiedostoja on hyvin paljon, maksimi voi jokereita käytettäessä ylittyä.

Sitä varten tehdään näin:

Koodia: [Valitse]
find . -maxdepth 0 -name test_file_\* -print0 | xargs -0 rm
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

Ux64

  • Käyttäjä
  • Viestejä: 586
    • Profiili
Tavallaan on, tavallaan ei...

Minulle se tuli siksi yllätyksenä että oletin sovelluksen rm suorittavan tarvittavan parseroinnin tiedostoille maskin mukaan, enkä shellin. Mutta aina sitä oppii uutta.

No Pythonin kanssa kun leikin, niin tein sillä softan joka siivosi tiedostot pois. Siivosi muuten vielä kaiken lisäksi ne järkyttävän nopeasti.

Vaikka nyt ei suoraan asiaan liitykkään niin selvästi olen missannut jotain tiedostojen koko kun näyttää selvästi vaikuttavan niiden deletoinnin nopeuteen ext3 levyllä. Miksi näin?

Samalla kun testasin tuota python softaa niin huomasin että ainakin levy-operaatot on kyllä kiitettävän nopeita. 10000 pienen tiedoston siivoaminen levyltä ottaa vain 200ms. Pitää ajaa sama testi Vistan puolella. Voisin vaan kuvitella että on ihan jotain toista luokkaa.
« Viimeksi muokattu: 10.05.08 - klo:15.05 kirjoittanut Ux64 »