Torna indietro   Hardware Upgrade Forum > Software > Linux, Unix, OS alternativi

Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-10-2008, 14:19   #1
power83
Member
 
Iscritto dal: Oct 2004
Messaggi: 81
Shell unix per ordinare file in cartelle

Buongiorno a tutti,
dovrei creare una shell unix che analizza il contenuto di
una cartella e ordina i vari file in sottocartelle.
Ad es nella cartella sono presenti i file a1.txt, a2.txt, b1.txt
il risultato sarebbe avere i file 'a' tutti dentro la sottocartella 'filea'
e i file 'b' tutti dentro la sottocartella 'fileb'.

E' possibile una cosa del genere, se si come?!?

Grazie
power83 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 15:43   #2
leuzr0x
Member
 
Iscritto dal: Nov 2007
Città: Ginevra
Messaggi: 256
Cosa intendi per creare una shell unix?
Scrivere una shell da 0 che ti permetta di fare cio' che dici tu, o uno script per una shell
gia' esistente (es bash) ?
leuzr0x è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 15:45   #3
power83
Member
 
Iscritto dal: Oct 2004
Messaggi: 81
Quote:
Originariamente inviato da leuzr0x Guarda i messaggi
Cosa intendi per creare una shell unix?
Scrivere una shell da 0 che ti permetta di fare cio' che dici tu, o uno script per una shell
gia' esistente (es bash) ?

Ciao, scriverla da 0!
power83 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 15:59   #4
dawid999
Senior Member
 
L'Avatar di dawid999
 
Iscritto dal: Nov 2006
Messaggi: 557
Quote:
Originariamente inviato da power83 Guarda i messaggi
Ciao, scriverla da 0!
script di shell
dawid999 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 16:10   #5
power83
Member
 
Iscritto dal: Oct 2004
Messaggi: 81
Quote:
Originariamente inviato da dawid999 Guarda i messaggi
script di shell
Sfortunatamente le mie conoscenze di unix sono pochine...potresti spiegarmi cosa intendi?!?

Grazie
power83 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 16:57   #6
megamitch
Senior Member
 
L'Avatar di megamitch
 
Iscritto dal: May 2004
Messaggi: 13037
Ciao,
quello che ti serve è uno "script" (o un programma se preferisci) che esegua le operazioni che ti servono.

La "shell" è l'ambiente dentro il quale il programma (o script) viene eseguito.

Ciao
M.

PS: per i puristi, non vogliatemene se ho usato un linguaggio "scorretto"...
__________________
"Qualunque cosa abbia il potere di farti ridere ancora trent'anni più tardi non è uno spreco di tempo. Credo che le cose di quella categoria si avvicinino molto all'immortalità"
megamitch è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 18:07   #7
leuzr0x
Member
 
Iscritto dal: Nov 2007
Città: Ginevra
Messaggi: 256
Quote:
Originariamente inviato da dawid999 Guarda i messaggi
script di shell
Si credo anch'io
Ma magari parlava di un progetto universitario o chissa' cosa
Facci sapere se ti serve uno script.
leuzr0x è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 19:15   #8
HexDEF6
Senior Member
 
L'Avatar di HexDEF6
 
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
ti posto una cosa che mi e' venuta di getto (non l'ho testato, quindi potrei aver fatto qualche cazzata, ma l'idea di base c'e')...
ma ovviamente ti consiglio di studiarti almeno un pelino di bash (almeno sapere cos'e' una shell e cosa uno script!)

Codice:
#!/bin/bash
for file in $(ls *.txt)
do
        directory=file$(echo $file | cut -c 1)
        mkdir -p $(pwd)/$directory
        mv $file $directory/
done
a dire la verita' adesso che ci ho pensato 10 secondi in piu' mi e' venuto in mente un metodo decisamente piu' veloce (se ci sono tanti file)...
ma adesso vado ad allenamento... magari posto piu' tardi!

ok avevo 5 minuti

Codice:
#!/bin/bash
for letter in $(ls *.txt | cut -c 1 | uniq)
do
	mkdir -p ./file$letter
	mv $letter*.txt ./file$letter
done
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++.
HOWTO: SSH Firewall e DMZ
ɐɹdosoʇʇos oʇuǝs ıɯ

Ultima modifica di HexDEF6 : 27-10-2008 alle 19:26.
HexDEF6 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 16:37   #9
power83
Member
 
Iscritto dal: Oct 2004
Messaggi: 81
Quote:
Originariamente inviato da megamitch Guarda i messaggi
Ciao,
quello che ti serve è uno "script" (o un programma se preferisci) che esegua le operazioni che ti servono.

La "shell" è l'ambiente dentro il quale il programma (o script) viene eseguito.

Ciao
M.

PS: per i puristi, non vogliatemene se ho usato un linguaggio "scorretto"...
Corretto...scusate la terminologia errata!
Ed è appunto un prgetto universitario!
Ci provo subito, grazie mille

Ps.: un ulteriore precisazione i nome dei file è a0001.txt .. a0011.txt e la cartella per uno sarà
cartella1 mentre per l'altro cartella11.

Ultima modifica di power83 : 28-10-2008 alle 16:57.
power83 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 18:12   #10
HexDEF6
Senior Member
 
L'Avatar di HexDEF6
 
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
Quote:
Originariamente inviato da power83 Guarda i messaggi
Corretto...scusate la terminologia errata!
Ed è appunto un prgetto universitario!
Ci provo subito, grazie mille

Ps.: un ulteriore precisazione i nome dei file è a0001.txt .. a0011.txt e la cartella per uno sarà
cartella1 mentre per l'altro cartella11.
beh le basi te le ho fatte vedere... adesso con una buona guida: http://tldp.org/LDP/abs/html/ e un po di buona volonta' vedrai che ce la fai a modificare lo script e a fare quello che ti serve...
ovviamente per suggerimenti e spiegazioni, ti do' una mano volentieri...
magari studia un attimo e poi posta il tuo script (con spiegazione di quello che vuoi fare quasi riga per riga) e noi ti diamo una mano a sistemare!

buon lavoro!
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++.
HOWTO: SSH Firewall e DMZ
ɐɹdosoʇʇos oʇuǝs ıɯ
HexDEF6 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 23:29   #11
Mason
Senior Member
 
L'Avatar di Mason
 
Iscritto dal: Nov 2002
Città: Morbegno (SO)
Messaggi: 1410
Quote:
Originariamente inviato da power83 Guarda i messaggi
Corretto...scusate la terminologia errata!
Ed è appunto un prgetto universitario!
Ci provo subito, grazie mille

Ps.: un ulteriore precisazione i nome dei file è a0001.txt .. a0011.txt e la cartella per uno sarà
cartella1 mentre per l'altro cartella11.
Almeno ci hai provato a farlo?

per policy, questi post dovrebbero essere corredati dal codice che uno prova a scrivere.
__________________
e' difficile cio' che non si conosce
Tic Tac
Andrew Morton, 15/02/2008 LKML:"`tmp' is an awful identifier, and renaming it to `temp' hardly improves it."

Ultima modifica di Mason : 28-10-2008 alle 23:37.
Mason è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 09:37   #12
power83
Member
 
Iscritto dal: Oct 2004
Messaggi: 81
Quote:
Originariamente inviato da Mason Guarda i messaggi
Almeno ci hai provato a farlo?

per policy, questi post dovrebbero essere corredati dal codice che uno prova a scrivere.
Certo che ci ho provato...

Grazie HexDEF6 per il manuale!!

Ora ci picchio un pò la testa!

Graziiiiiiiieeeeee!
power83 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 08:36   #13
power83
Member
 
Iscritto dal: Oct 2004
Messaggi: 81
Ciao a tutti,
grazie ai vostri consigli e al manuale sono riuscito a fare tutto il progetto
e non solo la piccola parte di cui chiedevo!

Mi sono restati due dubbi:
1) substring: sui vari manuali ho trovato questo codice:
stringZ=abcABC123ABCabc
echo `expr match "$stringZ" 'abc[A−Z]*.2'`
echo `expr "$stringZ" : 'abc[A−Z]*.2'`

Provando ad eseguirlo l'output a video sono giustamente due 8...in quanto la stringa abc o ABC è ripetuta 4 volte.
Ma non ne esiste un substring che faccia una cosa del genedere:
stringZ=abcABC123ABCabc
echo substr($stringZ,6,3)
Il cui output a video sarà in questo caso 123.

2) raplace: in questo caso, sempre sui manuali, ho trovato che il
replace si può fare con le seguenti istruzioni:
stringZ=abcABC123ABCabc
echo ${stringZ/#abc/XYZ}
echo ${stringZ/%abc/XYZ}

In entrambi i casi il risultato è bad substitution.
Quindi come posso sostituire una parte di da una stringa, esempio:
stringZ=abcABC123ABCabc
echo replace($stringZ,abc,'')
Il cui output a video sarà in questo caso ABC123ABC.

Scusate le domande sicuramente banali ma è la prima volta che mi "scontro"
con questo modo di scrivere programmi.

Grazie mille
power83 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 09:34   #14
HexDEF6
Senior Member
 
L'Avatar di HexDEF6
 
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
Quote:
Originariamente inviato da power83 Guarda i messaggi
Ciao a tutti,
grazie ai vostri consigli e al manuale sono riuscito a fare tutto il progetto
e non solo la piccola parte di cui chiedevo!

Mi sono restati due dubbi:
1) substring: sui vari manuali ho trovato questo codice:
stringZ=abcABC123ABCabc
echo `expr match "$stringZ" 'abc[A−Z]*.2'`
echo `expr "$stringZ" : 'abc[A−Z]*.2'`

Provando ad eseguirlo l'output a video sono giustamente due 8...in quanto la stringa abc o ABC è ripetuta 4 volte.
Ma non ne esiste un substring che faccia una cosa del genedere:
stringZ=abcABC123ABCabc
echo substr($stringZ,6,3)
Il cui output a video sarà in questo caso 123.
se ho capito cosa ti serve, si fa cosi:
echo ${stringZ:6:3}

Quote:
Originariamente inviato da power83 Guarda i messaggi
2) raplace: in questo caso, sempre sui manuali, ho trovato che il
replace si può fare con le seguenti istruzioni:
stringZ=abcABC123ABCabc
echo ${stringZ/#abc/XYZ}
echo ${stringZ/%abc/XYZ}

In entrambi i casi il risultato è bad substitution.
Quindi come posso sostituire una parte di da una stringa, esempio:
stringZ=abcABC123ABCabc
echo replace($stringZ,abc,'')
Il cui output a video sarà in questo caso ABC123ABC.

Scusate le domande sicuramente banali ma è la prima volta che mi "scontro"
con questo modo di scrivere programmi.

Grazie mille
stai usando una bash?
perche' le sostituzioni funzionano proprio cosi!

stringZ=abcABC123ABCabc
echo ${stringZ/#abc/XYZ}
il risultato sara' :
XYZABC123ABCabc
il # davanti indica che fara' la sostituzione solo se abc e' all'inizio della stringa

echo ${stringZ/%abc/XYZ}
il risultato sara':
abcABC123ABCXYZ
il % sta ad indicare che la sostituzione verra' fatta solo se la fine della stringa e' abc

se invece vuoi sostituire tutte le ricorrenze devi fare:
echo ${stringZ//abc/XYZ}
XYZABC123ABCXYZ
o se metti:
echo ${stringZ//abc/}
otterrai:
ABC123ABC

spero di aver chiarito!
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++.
HOWTO: SSH Firewall e DMZ
ɐɹdosoʇʇos oʇuǝs ıɯ
HexDEF6 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 09:48   #15
power83
Member
 
Iscritto dal: Oct 2004
Messaggi: 81
Ok, tutto chiaro...solo che sia per
echo ${stringZ:6:3} che per
echo ${stringZ//abc/}
il risultato è
${stringZ:6:3}: bad substitution
${stringZ//abc/}: bad substitution

Grazie mille per la spiegazione
power83 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 09:52   #16
HexDEF6
Senior Member
 
L'Avatar di HexDEF6
 
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
Quote:
Originariamente inviato da power83 Guarda i messaggi
Ok, tutto chiaro...solo che sia per
echo ${stringZ:6:3} che per
echo ${stringZ//abc/}
il risultato è
${stringZ:6:3}: bad substitution
${stringZ//abc/}: bad substitution

Grazie mille per la spiegazione
ma che sistema operativo stai usando?
che shell?
perche' queste funzionano sicuramente sotto bash (le ho provate proprio adesso!)... ma magari sotto qualche altra shell no...

prima di lanciare uno di questi script lancia:
bash

e poi vai con lo script
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++.
HOWTO: SSH Firewall e DMZ
ɐɹdosoʇʇos oʇuǝs ıɯ
HexDEF6 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 10:02   #17
power83
Member
 
Iscritto dal: Oct 2004
Messaggi: 81
SunOS 5.8
Neanche sotto bash funzionano:

bash-2.03$ prova.sh
file_0001.txt
file_0011.dat
file_0012.dat
/shell/prova.sh[34]: ${stringZ:6:3}: bad substitution
bash-2.03$

Grazie
power83 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 10:47   #18
HexDEF6
Senior Member
 
L'Avatar di HexDEF6
 
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
Quote:
Originariamente inviato da power83 Guarda i messaggi
SunOS 5.8
Neanche sotto bash funzionano:

bash-2.03$ prova.sh
file_0001.txt
file_0011.dat
file_0012.dat
/shell/prova.sh[34]: ${stringZ:6:3}: bad substitution
bash-2.03$

Grazie
azz, la guida credo si riferisca alla versione 3 di bash...
e infatti nel mio caso:
$ bash --version
GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++.
HOWTO: SSH Firewall e DMZ
ɐɹdosoʇʇos oʇuǝs ıɯ
HexDEF6 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 11:04   #19
power83
Member
 
Iscritto dal: Oct 2004
Messaggi: 81
Infatti noi abbaimo una misera version 2.03.0(1)-release...

Secondo te ci sono alternative?!?

Grazie
power83 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 11:22   #20
HexDEF6
Senior Member
 
L'Avatar di HexDEF6
 
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
Quote:
Originariamente inviato da power83 Guarda i messaggi
Infatti noi abbaimo una misera version 2.03.0(1)-release...

Secondo te ci sono alternative?!?

Grazie
beh, puoi usare sed e awk, ma per fare certe cose come modificare una stringa, mi sembrano un pelo esagerati...

vedo se magari trovo la versione dell'advanced bash scripting guide per la bash 2

dovresti trovarti la guida alla versione 2.8
dalla 3 in poi inizia a parlare anche di bash 3
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++.
HOWTO: SSH Firewall e DMZ
ɐɹdosoʇʇos oʇuǝs ıɯ

Ultima modifica di HexDEF6 : 30-10-2008 alle 11:31.
HexDEF6 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Cos'è RSL, il nuovo standard che ...
Nissan Micra EV: da 29.500 a oltre 36.00...
Processo Microsoft-ValueLicensing: cosa ...
L'edizione limitata più ambita da...
Lo sviluppatore di MSI Afterburner svela...
Quando l'AI diventa maestro: così...
Sony WH-1000XM6 già scontate su A...
NVIDIA chiede più velocità...
Windows 11 in soli 2,8 GB: con questo sc...
Panico in casa HYTE: ritirato dal mercat...
OPPO Reno14, debutto tra rooftoop esclus...
3DAIQ, il progetto di Concept Reply e TE...
Il parlamento francese contro TikTok: '&...
Apple Watch SE 2ª gen. Cellular a soli 2...
MotoE sospesa dopo il 2025: fine tempora...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v