Trovare links morti e file inutili con Bash
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Trovare links morti e file inutili con Bash
Mi sono messo in una bega, ho accettato di fare la manutenzione di un sito statico antichissimo (un sito web, non archeologico).
È su server windows, fatto con frames, strutturato in tabelle, senza CSS; scandaloso!
Problema da correggere numero 1: i files sono spesso nominati con nomi maiuscoli (anche con spazi) e richiamati da links minuscoli o viceversa (su win funzionano)
Problema numero 2 questo obbrobrio ha circa 240MB di files tutti insieme: tra pagine html e immagini , vorrei eliminare pagine e immagini non più collegate.
Questo lavoro lo farei per me, per rendermi il lavoro più agevole; se "il tipo" (un amico di un amico) avesse voluto spendere gli avrei rifatto il sito dinamico.
Se qualcuno ha qualche idea di come sia più conveniente procedere si faccia avanti, grazie.
Ho qualche idea su come procedere ma se avete già fatto qualcosa del genere apprezzerei una dritta.
È su server windows, fatto con frames, strutturato in tabelle, senza CSS; scandaloso!
Problema da correggere numero 1: i files sono spesso nominati con nomi maiuscoli (anche con spazi) e richiamati da links minuscoli o viceversa (su win funzionano)
Problema numero 2 questo obbrobrio ha circa 240MB di files tutti insieme: tra pagine html e immagini , vorrei eliminare pagine e immagini non più collegate.
Questo lavoro lo farei per me, per rendermi il lavoro più agevole; se "il tipo" (un amico di un amico) avesse voluto spendere gli avrei rifatto il sito dinamico.
Se qualcuno ha qualche idea di come sia più conveniente procedere si faccia avanti, grazie.
Ho qualche idea su come procedere ma se avete già fatto qualcosa del genere apprezzerei una dritta.
Salva l'Ucraina! 
- vaeVictis
- Imperturbabile Insigne

- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: Trovare links morti e file inutili con Bash
Problema da correggere numero 1: i files sono spesso nominati con nomi maiuscoli (anche con spazi) e richiamati da links minuscoli o viceversa (su win funzionano)
E quindi?Problema numero 2 questo obbrobrio ha circa 240MB di files tutti insieme: tra pagine html e immagini , vorrei eliminare pagine e immagini non più collegate.
Nel senso... indichi il problema, ma non come lo vuoi risolvere.
Che cambiamenti vuoi fare?
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Trovare links morti e file inutili con Bash
ma non è che esiste già qualcosa del genere? (chiedo perchè proprio non so)
btw, la prima soluzione ovvia che mi viene in mente è crawl-are il tutto con wget e (probabilmente in un secondo momento) verificare e listare quali sono i link morti, e quindi eliminarli.
btw, la prima soluzione ovvia che mi viene in mente è crawl-are il tutto con wget e (probabilmente in un secondo momento) verificare e listare quali sono i link morti, e quindi eliminarli.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Trovare links morti e file inutili con Bash
@Vae
Quello che vorrei fare è scritto dopo i "vorrei" nella descrizione del problema, ovvero
nel primo caso dovrei rinominare tutti i file in minuscolo e sostituire gli spazi con underscore,
(da 'NoMe del File.Htm' a 'nome_del_file.htm' e questo è facile! Solo che dopo dovrei sostituire i tag'.
Avrei pensato di salvare su file di testo temporaneo i nomi vecchi di tutti i file, e non ci sono problemi,
rinominare tutti file in modo corretto, e non ci sono problemi,
salvare su file di testo temporaneo i nomi corretti di tutti i file, e non ci sono problemi,
sostituire con sed in tutti i file .htm nome_vecchio con nome nuovo
è qui che potrebbero esserci diversi modi di agire, io avrei pensato di mettere i nomi vecchi e i nomi corretti in due array e poi fare la sostituzione con sed del vecchio_nome con il nuovo_nome_corretto su tutti i file.
Tu come faresti?
Per il secondo problema estrarrei tutti i collegamenti interni (ad altre pagine e immagini) dalla pagina index.html e stessa cosa farei sulle pagine individuate dai links recuperati.
Con due livelli di ricerca ovvero index->categorie dovrei intercettare tutte le pagine collegate.
Quando ho tutti gli indirizzi di pagine e immagini dovrei verificarne l'esistenza per trovare collegamenti interrotti.
Per eliminare i file inutili dovrebbe bastare eliminare i file .htm, .png, .gif, .jpg non presenti nel totale degli URL trovati.
Spero di essermi spiegato.
Il tutto è a livello teorico, prima di cominciare a scrivere il codice mi piacerebbe sentire se esistono procedimenti migliori.
@Crap
Vorrei fare la cosa offline in locale, fuori dal server web, se metto questo sito su Apache non funziona quasi nulla e non posso fare le prove sul sito in produzione.
Io in effetti non ho link morti ma pagine e immagini orfane.
Comunque bonificato il sito in locale poi via ftp cancellerei i file non necessari.
edit: se esiste qualcosa di già pronto va bene ugualmente.
Quello che vorrei fare è scritto dopo i "vorrei" nella descrizione del problema, ovvero
nel primo caso dovrei rinominare tutti i file in minuscolo e sostituire gli spazi con underscore,
(da 'NoMe del File.Htm' a 'nome_del_file.htm' e questo è facile! Solo che dopo dovrei sostituire i tag
Codice: Seleziona tutto
'<a href="NoMe del File.Htm">' con
'<a href="nome_del_file.htm">Avrei pensato di salvare su file di testo temporaneo i nomi vecchi di tutti i file, e non ci sono problemi,
rinominare tutti file in modo corretto, e non ci sono problemi,
salvare su file di testo temporaneo i nomi corretti di tutti i file, e non ci sono problemi,
sostituire con sed in tutti i file .htm nome_vecchio con nome nuovo
è qui che potrebbero esserci diversi modi di agire, io avrei pensato di mettere i nomi vecchi e i nomi corretti in due array e poi fare la sostituzione con sed del vecchio_nome con il nuovo_nome_corretto su tutti i file.
Tu come faresti?
Per il secondo problema estrarrei tutti i collegamenti interni (ad altre pagine e immagini) dalla pagina index.html e stessa cosa farei sulle pagine individuate dai links recuperati.
Con due livelli di ricerca ovvero index->categorie dovrei intercettare tutte le pagine collegate.
Quando ho tutti gli indirizzi di pagine e immagini dovrei verificarne l'esistenza per trovare collegamenti interrotti.
Per eliminare i file inutili dovrebbe bastare eliminare i file .htm, .png, .gif, .jpg non presenti nel totale degli URL trovati.
Spero di essermi spiegato.
Il tutto è a livello teorico, prima di cominciare a scrivere il codice mi piacerebbe sentire se esistono procedimenti migliori.
@Crap
Vorrei fare la cosa offline in locale, fuori dal server web, se metto questo sito su Apache non funziona quasi nulla e non posso fare le prove sul sito in produzione.
Io in effetti non ho link morti ma pagine e immagini orfane.
Comunque bonificato il sito in locale poi via ftp cancellerei i file non necessari.
edit: se esiste qualcosa di già pronto va bene ugualmente.
Salva l'Ucraina! 
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Trovare links morti e file inutili con Bash
Ci ho ripensato, potrei usare il metodo di Crap.
Se faccio una "scansione" con wget ottengo tutte le pagina che sono collegate alle pagine genitrici quindi le orfane non appaiono.
Se faccio la differenza con l'elenco delle pagine che ho realmente, con l'elenco delle pagine trovate da wget ottengo le pagine orfane da eliminare.
Si molto meno macchinoso.
Grazie Crap
Edit: per individuare le differenze che mi consigliate: studiare 'diff' o qualche altro metodo?
Se faccio una "scansione" con wget ottengo tutte le pagina che sono collegate alle pagine genitrici quindi le orfane non appaiono.
Se faccio la differenza con l'elenco delle pagine che ho realmente, con l'elenco delle pagine trovate da wget ottengo le pagine orfane da eliminare.
Si molto meno macchinoso.
Grazie Crap
Edit: per individuare le differenze che mi consigliate: studiare 'diff' o qualche altro metodo?
Salva l'Ucraina! 
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Trovare links morti e file inutili con Bash
dipende dall'output, diff potrebbe andare bene
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Trovare links morti e file inutili con Bash
Statico o meno i cambi in corsa non si fanno mai e su questo ci sei: tu stesso hai detto di volerlo fare prima in locale, giusto per sicurezza... e questa è cosa buona e giusta!!
Scripting a parte, di cui potrei consigliarti ben poco, ti suggerisco di portare tutto in locale e di sottoporre al controllo di versione(io sarei per git) la directory contenente l'intero sito, in modo da poter tornare indietro in qualsiasi momento essendo anche un po' più fault tolerant... che di certo non fa male.
Scripting a parte, di cui potrei consigliarti ben poco, ti suggerisco di portare tutto in locale e di sottoporre al controllo di versione(io sarei per git) la directory contenente l'intero sito, in modo da poter tornare indietro in qualsiasi momento essendo anche un po' più fault tolerant... che di certo non fa male.
Ultima modifica di Manaphy91 il mercoledì 19 giugno 2013, 0:55, modificato 1 volta in totale.
Il test di un programma può essere usato per mostrare la presenza di bug, ma mai per mostrare la loro assenza(cit. Edsger Dijkstra)
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Trovare links morti e file inutili con Bash
Si ma le modifiche le farei inizialmente solo in locale, dove ho una copia speculare del sito remoto, (gli esperimenti li farei su una copia della copia.
Con wget non modifico niente, scarico soltanto.
Git finora non l'ho mai usato, avevo cominciato a studiarlo ma come mi capita spesso, sono passato di palo in frasca, ci sono troppi argomenti interessanti.
Comunque gli esperimenti comincierò a farli sabato o domenica, ora non ho tempo.
Per il primo problema? Avete qualche altro procedimento da proporre?
Con wget non modifico niente, scarico soltanto.
Git finora non l'ho mai usato, avevo cominciato a studiarlo ma come mi capita spesso, sono passato di palo in frasca, ci sono troppi argomenti interessanti.
Comunque gli esperimenti comincierò a farli sabato o domenica, ora non ho tempo.
Per il primo problema? Avete qualche altro procedimento da proporre?
Salva l'Ucraina! 
Re: Trovare links morti e file inutili con Bash
sed ha l'opzione I che non tiene conto delle mauscole e minuscole.
Una volta rinominati i file togliendo spazi e maiuscole, salva una lista dei nomi dei file rinominati da qualche parte e usa sed per sostituirli con il nome gisto in tutti gli altri file.
Per esempio: file input.txt
comando
output.txt:
Una volta rinominati i file togliendo spazi e maiuscole, salva una lista dei nomi dei file rinominati da qualche parte e usa sed per sostituirli con il nome gisto in tutti gli altri file.
Per esempio: file input.txt
Codice: Seleziona tutto
ciao mondo
Ciao mONDO
cio smcjf
siowene fijwe
cIAo MonDo
Codice: Seleziona tutto
sed 's/ciao mondo/ciao_mondo/gI' input.txt > output.txt
Codice: Seleziona tutto
ciao_mondo
ciao_mondo
cio smcjf
siowene fijwe
ciao_mondo
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Trovare links morti e file inutili con Bash
Grazie melfnt, è proprio quello che ho intenzione di fare, domani proverò a scrivere un po di codice, in teoria dovrei riuscirci senza problemi, poi se trovo intoppi mi rifaccio vivo.
Salva l'Ucraina! 
-
Francesco Biagio
- Prode Principiante
- Messaggi: 4
- Iscrizione: venerdì 21 giugno 2013, 13:06
Re: Trovare links morti e file inutili con Bash
Anche io ho il tuo stesso problema, non so come faree!
- vaeVictis
- Imperturbabile Insigne

- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: Trovare links morti e file inutili con Bash
UbuNuovo [url=http://forum.ubuntu-it.org/viewtopic.php?p=4410162#p4410162][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Grazie melfnt, è proprio quello che ho intenzione di fare, domani proverò a scrivere un po di codice, in teoria dovrei riuscirci senza problemi, poi se trovo intoppi mi rifaccio vivo.
Codice: Seleziona tutto
vaevictis@HAL:~/Scrivania$ cat foo.txt
ciao mondo
Ciao mONDO
cio smcjf
siowene fijwe
cIAo MonDo
vaevictis@HAL:~/Scrivania$ cat foo.txt | tr '[A-Z ]' '[a-z_]'
ciao_mondo
ciao_mondo
cio_smcjf
siowene_fijwe
ciao_mondo
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Trovare links morti e file inutili con Bash
Ancora più semplice, il sistema è ottimo, ma probabilmante userò sed in modo da usare le regexp, altrimenti potrei filtrare con le 'grep -P' e mettere il risultato in pipe a 'tr', domani sperimento.
Grazie Vaevictis.
Grazie Vaevictis.
Salva l'Ucraina! 
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Trovare links morti e file inutili con Bash
Ho guardato il man di sed e mi pare che non si possano usare le PECRE, ho visto giusto o c'è un modo?
edit: sto facendo confusione, stavo pensando ad un'altro sistema, se agisco direttamente sui file per la sola sostituzione non devo usare le regex
edit: sto facendo confusione, stavo pensando ad un'altro sistema, se agisco direttamente sui file per la sola sostituzione non devo usare le regex
Salva l'Ucraina! 
Re: Trovare links morti e file inutili con Bash
Già, il metodo è più semplice, ma a lui serve di sostituire solo alcuni nomi (in questo caso la stringa "ciao mondo") e non tutto il contenuto del file...vaeVictis [url=http://forum.ubuntu-it.org/viewtopic.php?p=4410608#p4410608][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:UbuNuovo [url=http://forum.ubuntu-it.org/viewtopic.php?p=4410162#p4410162][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Grazie melfnt, è proprio quello che ho intenzione di fare, domani proverò a scrivere un po di codice, in teoria dovrei riuscirci senza problemi, poi se trovo intoppi mi rifaccio vivo.Codice: Seleziona tutto
vaevictis@HAL:~/Scrivania$ cat foo.txt ciao mondo Ciao mONDO cio smcjf siowene fijwe cIAo MonDo vaevictis@HAL:~/Scrivania$ cat foo.txt | tr '[A-Z ]' '[a-z_]' ciao_mondo ciao_mondo cio_smcjf siowene_fijwe ciao_mondo
altrimenti si ritroverebbe un file html TUTTO MAIUSCOLO e con _ invece che spazi
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Trovare links morti e file inutili con Bash
Per chiarirmi/vi le idee userò 'tr 'per rinominare i file e mette da parte i nomi, invece sed per fare le sostituzioni.
Per ora la rinominazione è quasi pronta, ho fatto qualche prova e questo è il risultato, devo fare altre prove .
# precisazioni
L'intero sito è nella dir 'sito', ma credo che farò 'cd sito' e userò '.' in find per non avere il nome della dir nei risultati.
Per ora ho 'echo' sulla rinomina.
ho dovuto cambiare il separatore altrimenti $i mi prendeva pezzi di file con gli spazi.
Per mettere da parte i nomi che serviranno per la sostituzione, ho fatto un po di prove, mettendoli su file, su variabile ma credo che userò gli array per ciclarli in sed.
Ora per verifica devo:contare, ordinare e usare 'unique' sugli array vecchi_nomi e nuovi_nomi, per vedere se ci fossero file eliminati dalla rinomina. Altrimenti devo fare un controllo sull'esistenza del file prima di rinominarlo, cosa che avevo già fatto in un'altro script.
Ora devo però interrompere, ho da fare il casalingo, (sono felicemente divorziato) : )
Per ora la rinominazione è quasi pronta, ho fatto qualche prova e questo è il risultato, devo fare altre prove .
# precisazioni
L'intero sito è nella dir 'sito', ma credo che farò 'cd sito' e userò '.' in find per non avere il nome della dir nei risultati.
Per ora ho 'echo' sulla rinomina.
Codice: Seleziona tutto
sep_default="$IFS"
IFS='
'
for i in $(find sito -type f); do
nuovo_nome=$(echo "$i" | tr '[A-Z ]' '[a-z_]')
echo mv "$i" "$nuovo_nome"; done
done # non va 'i' prende parte del nome dei file con gli spazi
IFS="$sep_default"Per mettere da parte i nomi che serviranno per la sostituzione, ho fatto un po di prove, mettendoli su file, su variabile ma credo che userò gli array per ciclarli in sed.
Codice: Seleziona tutto
# Prova array
declare -a vecchi_nomi=("$(find sito -type f)")
#verifica
for nome_vecchio in "${vecchi_nomi[@]}"; do
echo "$nome_vecchio"
done #OK
declare -a nuovi_nomi=($(find sito -type f | tr '[ A-Z]' '[_a-z]'))
# verifica
for nome_nuovo in "${nuovi_nomi[@]}"; do
echo "$nome_nuovo"
done # OKOra devo però interrompere, ho da fare il casalingo, (sono felicemente divorziato) : )
Ultima modifica di UbuNuovo il sabato 22 giugno 2013, 11:00, modificato 1 volta in totale.
Salva l'Ucraina! 
Re: Trovare links morti e file inutili con Bash
Se hai problemi a leggere i nomidei file che contengono spazi (da rinominare con tr), tempo fa avevo sperimentato questo:
In pratica stampa la lista dei nomi dei file su un altro file temporaneo (.p) e nel ciclo lo legge riga per riga.
In questo modo nel nome del file comprende anche gli spazi
Codice: Seleziona tutto
find . -type f >.p
while read item
do
......
......
......
done < .p
rm .p
In questo modo nel nome del file comprende anche gli spazi
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Trovare links morti e file inutili con Bash
@melfnt purtoppo devo usare il separatore modificato anche sugli array, ora spiego il perchè.
Appena incominciato mi sono subito bloccato, stesso problema degli spazi, anche nell'array
vuol dire che ci sono 2360-1755=605 file con gli spazi.
Quindi ho dovuto reimpostare IFS con l'a capo.
Ora il terminale mi fa confondere, invece di eseguire il codice che incollo mi esegue quello vecchio! Bo??
Appena incominciato mi sono subito bloccato, stesso problema degli spazi, anche nell'array
Codice: Seleziona tutto
declare -a vecchi_nomi=($(find sito -type f))
echo "${#vecchi_nomi[@]}"
#output: 2360
declare -a nuovi_nomi=($(find sito -type f | tr '[ A-Z]' '[_a-z]'))
echo ${#nuovi_nomi[@]}
#output: 1755Quindi ho dovuto reimpostare IFS con l'a capo.
Codice: Seleziona tutto
IFS='
'
declare -a vecchi_nomi=($(find sito -type f))
echo "${#vecchi_nomi[@]}"
#output: 1755
declare -a nuovi_nomi=($(find sito -type f | tr '[ A-Z]' '[_a-z]'))
echo ${#nuovi_nomi[@]}
#output: 1755Salva l'Ucraina! 
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Trovare links morti e file inutili con Bash
Porka vakka, è venuto fuori un problema su un sito devo interrompere!
Salva l'Ucraina! 
- UbuNuovo
- Imperturbabile Insigne

- Messaggi: 4457
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Trovare links morti e file inutili con Bash
È casinoso lavorare con gli array in Bash! Potevano avere una sintassi array=('bal bla', "Mario D'Ambrosio",...)? Avrebbe semplificato tutto!
Tra virgolette: si o no e cambio di separatore ci sono diventato scemo.
Comunque a tentativi sono arrivato ad ottenere gli array che volevo:
Come si vede non c'è perdita di file, quindi per ora non ci metto la funzione di controllo per i nomi duplicati, semmai la metto da ultimo insieme ai controlli e all'acquisizione argomenti, in modo da fare uno script utile agli altri.
Ora ho tutto quello che serve per fare le sostituzioni con sed, solo che tra mezzora, anzi 20 minuti devo andare via... per oggi non lo finisco quesco script, maremma impestata!
Tra virgolette: si o no e cambio di separatore ci sono diventato scemo.
Comunque a tentativi sono arrivato ad ottenere gli array che volevo:
Codice: Seleziona tutto
IFS='
'
declare -a vecchi_nomi=("$(find "$path" -type f)")
# ordino e levo i record doppi
vecchi_nomi_unici=($(sort -u <<< "${vecchi_nomi[*]}"))
echo "${#vecchi_nomi_unici[@]}"
1755
declare -a nuovi_nomi=("$(find "$path" -type f | tr '[ A-Z]' '[_a-z]')")
nuovi_nomi_unici=($(sort -u <<< "${nuovi_nomi[*]}"))
echo "${#nuovi_nomi_unici[@]}"
1755Ora ho tutto quello che serve per fare le sostituzioni con sed, solo che tra mezzora, anzi 20 minuti devo andare via... per oggi non lo finisco quesco script, maremma impestata!
Salva l'Ucraina! 
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti
