|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jul 2008
Messaggi: 18
|
[RISOLTO][BASH - LINUX] Operazioni su lista file
Buona serata a tutti.
O buona giornata, o buona notte... chissà quando "tu-proprio-tu" stai leggendo... ![]() Vabbè. Cavolate a parte. Ho questo problema: sto cercando di automatizzare la creazione dei link con uno script. Ho scartato l'ipotesi di Codice:
tasto destro -> Invia a -> Desktop (crea link) Quello che ho scritto (adattando i risultati di qualche ora di ricerca su Internet) è: Codice:
#!/bin/bash # Crea un hard link per tutti i files che corrispondono ad una data maschera # I collegamenti saranno creati nella stessa directory e avranno lo stesso nome file con il tag [LN] all'inizio # # Uso: CreaLink <maschera_file> # # Utilizzare la barra retroversa per fare ESCAPE degli spazi nella maschera del file # # Esempio: # CreaLink *Gabriella\ a\ Roma* # Crea un hard link per tutti i file nella directory corrente nel cui nome compare, in qualsiasi posizione, la frase "Gabriella a Roma" # declare -a NomeFile NumeroFile=0 for i in "$1" do NomeFile[$NumeroFile]="$i" let NumeroFile=NumeroFile+1 done let NumeroFile=NumeroFile-1 for i in $(eval echo {0..$NumeroFile}) do ln "${NomeFile[${i}]}" [LN]"${NomeFile[${i}]}" done Qualche idea? Grazie in anticipo. Sistema operativo: Linux Xubuntu 12.10 in fase di aggiornamento alla 14.04 Ultima modifica di pl1957 : 11-07-2014 alle 09:48. Motivo: errore di digitazione |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: Jul 2008
Messaggi: 18
|
Prova che ti riprova, alla fine la mia coccia dura ha vinto.
Ecco il codice che funziona. Magari non sarà un campione di eleganza, ma funge allo scopo. Codice:
#!/bin/bash # # Crea un hard link per tutti i files che corrispondono ad una data maschera # I collegamenti saranno creati nella stessa directory e avranno lo stesso nome file con il tag [LN] all'inizio # # Uso: CreaLink <maschera_file_senza asterischi_o_punto_interrogativo> # # Utilizzare la barra retroversa per fare ESCAPE degli spazi nella maschera del file # # Esempio: # CreaLink Gabriella\ a\ Roma # Crea un hard link per tutti i file nella directory corrente nel cui nome compare, in qualsiasi posizione, la frase "Gabriella a Roma" # # ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ # # Inizializzo la variabile indice e creo un array vuoto NumeroFile=0 declare -a NomeFile # Ciclo di riempimento dell'array con i nomi di tutti i file contenuti nella directory corrente for i in * do NomeFile[$NumeroFile]=$i NumeroFile=$((NumeroFile+1)) done # Ciclo di lettura dell'array for ((i=0; i<$NumeroFile; i++)) do # Scarto i collegamenti if ! [[ "${NomeFile[${i}]}" =~ \[LN\] ]] then # Se nel nome del file trovo la sequenza di caratteri passati come parametro... if [[ "${NomeFile[${i}]}" =~ $1 ]] then # ...e se non ho già creato il collegamento... if ! [ -f \[LN\]"${NomeFile[${i}]}" ] then # ...allora creo il link ln "${NomeFile[${i}]}" [LN]"${NomeFile[${i}]}" fi fi fi done # |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:35.