• Re: Directory con troppi file

    From Marco Bodrato@21:1/5 to All on Fri Jun 10 15:50:01 2022
    Ciao,

    Il 2022-06-10 15:22 Diego Zuccato ha scritto:
    Un utente ha creato una cartella con qualcosa come 410 *mila* file.
    Ora vorrei dare una "pulita", ma visto che non posso cancellarglieli
    vorrei farne una serie di tar più maneggevoli.
    Purtroppo se tento di usare partedelnome-* l'espansione della wildcard
    si ritrova comunque con troppi nomi da gestire (circa 6k, ma non posso neanche spezzare il dataset in 1000 tar...).
    Ricordo che c'è un sistema per aggirare la limitazione, ma a quest'ora
    di venerdì proprio non riesco a farmelo venire in mente.

    Non lo ricordo neppure io.
    Immagino che i nomi file siano "calcolabili"... o almeno lo spero.
    Nel caso, personalmente creerei con un for, anche da bash tante cartelle
    quanti vuoi che siano i tar e con un altro for sposterei i file (100
    alla volta, così non hai problemi) nelle varie cartelle.

    Ĝis,
    m

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From gerlos@21:1/5 to All on Fri Jun 10 16:10:01 2022
    Il ven 10 giu 2022, 15:46 Marco Bodrato <bodrato@mail.dm.unipi.it> ha
    scritto:

    Ciao,

    Il 2022-06-10 15:22 Diego Zuccato ha scritto:
    Un utente ha creato una cartella con qualcosa come 410 *mila* file.
    Ora vorrei dare una "pulita", ma visto che non posso cancellarglieli
    vorrei farne una serie di tar più maneggevoli.
    Purtroppo se tento di usare partedelnome-* l'espansione della wildcard
    si ritrova comunque con troppi nomi da gestire (circa 6k, ma non posso neanche spezzare il dataset in 1000 tar...).
    Ricordo che c'è un sistema per aggirare la limitazione, ma a quest'ora
    di venerdì proprio non riesco a farmelo venire in mente.

    Non lo ricordo neppure io.
    Immagino che i nomi file siano "calcolabili"... o almeno lo spero.
    Nel caso, personalmente creerei con un for, anche da bash tante cartelle quanti vuoi che siano i tar e con un altro for sposterei i file (100
    alla volta, così non hai problemi) nelle varie cartelle.


    Io spezzerei il problema in più step: prima userei find . per farmi un file con la lista dei file, poi spezzerei la lista in N liste con M elementi con split -l M, e infine farei fare un file Tar per ogni lista usando l'opzione
    -T.

    Saluti
    Gerlos

    <div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il ven 10 giu 2022, 15:46 Marco Bodrato &lt;<a href="mailto:bodrato@mail.dm.unipi.it">bodrato@mail.dm.unipi.it</a>&gt; ha scritto:<br></div><blockquote class="gmail_
    quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ciao,<br>

    Il 2022-06-10 15:22 Diego Zuccato ha scritto:<br>
    &gt; Un utente ha creato una cartella con qualcosa come 410 *mila* file.<br> &gt; Ora vorrei dare una &quot;pulita&quot;, ma visto che non posso cancellarglieli<br>
    &gt; vorrei farne una serie di tar più maneggevoli.<br>
    &gt; Purtroppo se tento di usare partedelnome-* l&#39;espansione della wildcard<br>
    &gt; si ritrova comunque con troppi nomi da gestire (circa 6k, ma non posso<br> &gt; neanche spezzare il dataset in 1000 tar...).<br>
    &gt; Ricordo che c&#39;è un sistema per aggirare la limitazione, ma a quest&#39;ora<br>
    &gt; di venerdì proprio non riesco a farmelo venire in mente.<br>

    Non lo ricordo neppure io.<br>
    Immagino che i nomi file siano &quot;calcolabili&quot;... o almeno lo spero.<br>
    Nel caso, personalmente creerei con un for, anche da bash tante cartelle <br> quanti vuoi che siano i tar e con un altro for sposterei i file (100 <br>
    alla volta, così non hai problemi) nelle varie cartelle.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Io spezzerei il problema in più step: prima userei find . per farmi un file con la lista dei file, poi spezzerei la lista in
    N liste con M elementi con split -l M, e infine farei fare un file Tar per ogni lista usando l&#39;opzione -T.</div><div dir="auto"><br></div><div dir="auto">Saluti</div><div dir="auto">Gerlos</div><div dir="auto"><br></div><div dir="auto"><div class="
    gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
    </blockquote></div></div></div>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From cage@21:1/5 to Diego Zuccato on Sat Jun 11 11:10:02 2022
    On Fri, Jun 10, 2022 at 03:22:36PM +0200, Diego Zuccato wrote:
    Ciao a tutti.

    Ciao!

    [...]

    Purtroppo se tento di usare partedelnome-* l'espansione della wildcard si ritrova comunque con troppi nomi da gestire (circa 6k, ma non posso neanche spezzare il dataset in 1000 tar...).

    Ipotesi: usare xargs?

    Ciao!
    C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Leonardo Boselli@21:1/5 to cage on Sat Jun 11 11:50:01 2022
    usare partedelnome-[Aa][A-Fa-f]* poi partedelnome-[Aa][G-Pg-p]* poi partedelnome-[Aa][P-Zp-z]* poi partedelnome-[Bb][A-Fa-f]*
    se ci sono cifre fai i giri anche su quelle.

    On Sat, 11 Jun 2022, cage wrote:

    On Fri, Jun 10, 2022 at 03:22:36PM +0200, Diego Zuccato wrote:
    Ciao a tutti.

    Ciao!

    [...]

    Purtroppo se tento di usare partedelnome-* l'espansione della wildcard si
    ritrova comunque con troppi nomi da gestire (circa 6k, ma non posso neanche >> spezzare il dataset in 1000 tar...).

    Ipotesi: usare xargs?

    Ciao!
    C.



    --
    Leonardo Boselli
    Firenze, Toscana, Europa
    http://i.trail.it
    tel:+393287329225

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From cage@21:1/5 to Alessandro Rubini on Sat Jun 11 12:50:01 2022
    On Sat, Jun 11, 2022 at 12:12:34PM +0200, Alessandro Rubini wrote:

    Ciao!

    Ipotesi: usare xargs?

    xargs invoca tanti comandi, ciscuno con una riga di comando separata.
    Ve bene per grep, ma non per tar.

    Ah, vedi mi sbagliavo. Mi ricordavo che xargs potesse "tagliare" una
    grossa linea di comando in fettine di n record. Cosi', pensavo, si potessero fare dei tar separati con questi n file.

    Il fatto e' che l'ho usato cosi' poco che poi mi scordo le opzioni.

    Ciao e grazie della correzione!
    C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alessandro Rubini@21:1/5 to All on Sat Jun 11 13:00:02 2022
    Ipotesi: usare xargs?

    xargs invoca tanti comandi, ciscuno con una riga di comando separata.
    Ve bene per grep, ma non per tar.

    Pero` "man tar" mi dice che c'e` "--append" (-r). Ovviamente non va bene
    per un file compresso, ma lo si comprime dopo.

    Oppure "--files-from" (-T). Si crea una lista di file (i 6k nomefile-*)
    che anche se supererebbero la lungezza massima di riga di comand (128k? non ricordo ma era qualcosa del genere) e poi si fa il tar relativo.
    Come si diceva altrove, con find (che espande lui gli asterischi).

    mkdir ../out
    find . -name "basename1-*" > list1
    tar -T list1 -cvf ../out/basename1.tar
    find . -name "basename1-*" | xargs rm

    e poi via con basename2 eccetera.

    Pero` se poi l'utente estrae tutto siamo sempre li`. Forse
    conviene fare subdir, cosi` se estrae ha varie dir da 6k file e non
    140k file tutti insieme.

    mkdir basename1
    mv $(find . -name basename1-* | head -1000) basename1
    # ripetere finche` non si arrabbia che non ce ne sono piu`
    tar cf basename1.tar basename1

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marco Ciampa@21:1/5 to Diego Zuccato on Mon Jul 4 10:00:01 2022
    On Fri, Jun 10, 2022 at 03:22:36PM +0200, Diego Zuccato wrote:
    Ciao a tutti.

    Un utente ha creato una cartella con qualcosa come 410 *mila* file.
    Ora vorrei dare una "pulita", ma visto che non posso cancellarglieli vorrei farne una serie di tar più maneggevoli.
    Purtroppo se tento di usare partedelnome-* l'espansione della wildcard si ritrova comunque con troppi nomi da gestire (circa 6k, ma non posso neanche spezzare il dataset in 1000 tar...).
    Ricordo che c'è un sistema per aggirare la limitazione, ma a quest'ora di venerdì proprio non riesco a farmelo venire in mente.
    Qualche buon'anima?

    Diversi sistemi che hanno il problema di creare potenzialmente troppi
    file usano il seguente metodo: creano tante cartelle con nome AB dove A è
    una lettera dell'alfabeto (a b c d ecc. ) e B è un'altra. Ai file vengono preposte due lettere nella forma aa, ab, ac, ad .... ba, bb, bc ecc. in
    modo da creare una serie di sottocartelle le quali hanno a loro volta
    solo un limitato quantitativo di file. In questo modo le cartelle (che
    altro non sono che degli indici) rimangono di dimensioni limitate e, side effect, la ricerca file risulta molto più veloce.
    Se serve si può creare anche un ulteriore livello (non mi sembra il tuo caso).

    Tutto sta a capire se questo metodo nel tuo caso possa applicarsi, ovvero
    se puoi cambiare i nomi dei file o aggiungere questa sequenza o
    sfruttarne una esistente. Non so dire di più perché bisognerebbe sapere
    come sono nominati questi file numerosi con cui hai a che fare.


    --

    Amike,
    Marco Ciampa

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)