Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
NXTPAPER 60 Ultra è il primo smartphone con tecnologia NXTPAPER 4.0 per il display, un ampio IPS da 7,2 pollici. Con finitura anti-riflesso, processore MediaTek Dimensity 7400, fotocamera periscopica e modalità Max Ink per il detox digitale, NXTPAPER 60 Ultra punta a essere il riferimento tra gli smartphone pensati per il benessere degli occhi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-08-2005, 08:13   #1
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
[Bash scripting] Verificare data di modifica di un file

Ciao,
sono ancora qua per rompervi con i miei problemi con il bash scripting. Questa volta il problema,imho, e' abbastanza ostico. Io devo creare uno script che controlli la data di modifica di un file e se e' inferiore ad un ora eseguire un operazione. Facendo una ricerca avevo pensato di usare l'opzione -atime di ls, pero' non sono riuscito a fare un ciclo if decente.
Avete consigli?
grazie
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 08:17   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Più che ls, userei stat (v. stat --help, in particolare il parametro --format) così da avere direttamente un valore numerico utilizzabile.
Sposto in programmazione.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 08:35   #3
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
Grazie, comunque ho trovato anche la funzione date -r file che fa la stessa cosa.
Adesso la mia domanda e': Come posso lavorare con le date?
Io vorrei fare una cosa cosi':
Codice:
var = $data_di_oggi - $data_ultima_modifica
if var >= maggiore di un ora then
...
...
else
...
...
E' possibile?
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 08:40   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Oppure (meglio) puoi usare direttamente find; ad es. questo:

find ./ -type f -mtime +<n> -exec <tuo script> {} \;

cerca dalla dir corrente tutti i file regolari (-type f) modificati prima di <n> giorni fa (puoi anche usare -mmin specificando i minuti; ad es. -mmin +10), e per ogni corrispondenza invoca un tuo script passando come parametro il file trovato. Puoi implementare la funzione da eseguire dentro lo script.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:00   #5
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
Molto interessante,
l'unico problemino e' che teoricamente potrebbe trovarmi piu' file, gli posso dare anche il nome del file da cercare=?
Un altra domanda: a posto dello script per una funzione gli do il suo nome tipo:
-exec <funzione()> {} \;?
Ciao e grazie
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:07   #6
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da magix2003
Molto interessante,
l'unico problemino e' che teoricamente potrebbe trovarmi piu' file, gli posso dare anche il nome del file da cercare=?
Puoi dargli tutti i parametri di ricerca che find supporta, ovviamente.
Quote:
Un altra domanda: a posto dello script per una funzione gli do il suo nome tipo:
-exec <funzione()> {} \;?
Temo di no, ma puoi aggirare il problema in questa maniera:
Codice:
#!/bin/bash

(find [parametri...]) | while read fname
do
	# fai quello che vuoi con "$fname"
done
Tra i parametri di find qui ovviamente non usi -exec.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:14   #7
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
Grazie mille,
credo che questa soluzione potrebbe funzionare
Pero' ho ancora un problema provando a fare:
Codice:
find ./ -type f -name psql -mtime +1;
In questa cartella
Codice:
[root@probe3 tmp]# ls -la
totale 34372
drwxrwxrwt  10 root     root         4096 23 ago 10:07 .
drwxr-xr-x  23 root     root         4096 22 ago 15:27 ..
-rw-r--r--   1 postgres postgres   208110 19 ago 09:15 a.a
-rw-r--r--   1 root     root      2753088 18 ago 00:59 ala
srwxrwxrwx   1 root     root            0  3 ago 18:18 collect.pipe
-rw-------   1 root     root           28 18 ago 09:35 crontab.XXXXCglLR7
-rw-r--r--   1 root     root     23327394 19 ago 10:41 det.det
drwxrwxrwt   2 root     root         4096 19 ago 10:52 .esd
drwxrwxrwt   2 root     root         4096  2 ago 15:45 .font-unix
drwx------   2 root     root         4096 19 ago 10:52 gconfd-root
srw-rw-rw-   1 root     root            0  2 ago 15:46 .gdm_socket
drwxrwxrwt   2 root     root         4096 19 ago 10:52 .ICE-unix
srwxr-xr-x   1 root     root            0  2 ago 15:53 mapping-root
drwx------   2      501      501     4096 10 ago 11:28 mc-gstefanoni
drwx------   2 root     root         4096 18 ago 17:54 mc-root
drwx------   2 root     root         4096 19 ago 10:52 orbit-root
-rw-r--r--   1 root     root      2753088 19 ago 02:08 prova
-rw-r--r--   1 root     root      2753088 19 ago 02:22 prova;
-rw-r--r--   1 root     root       421298 19 ago 09:52 prova.ciao
-rw-r--r--   1 root     root            0 22 ago 17:07 psql
-rw-r--r--   1 root     root      2753088 19 ago 02:17 script.out
srwxrwxrwx   1 postgres postgres        0 23 ago 10:03 .s.PGSQL.5432
-rw-------   1 postgres postgres       26 23 ago 10:03 .s.PGSQL.5432.lock
-r--r--r--   1 root     root           11  2 ago 15:46 .X0-lock
drwxrwxrwt   2 root     root         4096  2 ago 15:46 .X11-unix
Non mi trova niente, ho provato anche cambiando il valore + n ma niente...

Quote:
#!/bin/bash

(find [parametri...]) | while read fname
do
# fai quello che vuoi con "$fname"
done
Scusami ma fname e' inteso per il file name vero?
Ciao e grazie ancora
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:18   #8
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da magix2003
Grazie mille,
credo che questa soluzione potrebbe funzionare
Pero' ho ancora un problema provando a fare:
Codice:
find ./ -type f -name psql -mtime +1;
In questa cartella
Codice:
-rw-r--r--   1 root     root            0 22 ago 17:07 psql
Non mi trova niente, ho provato anche cambiando il valore + n ma niente...
Il file psql è stato modificato meno di 24 ore fa. Leggi la man page di find.


Quote:
Scusami ma fname e' inteso per il file name vero?
E' una variabile bash, che conterrà il nome del file. Puoi chiamarla come vuoi.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:23   #9
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
Ok o letto(spero di aver capito bene), quindi significa che se un file e' stato creato prima di 24 ore fa non posso usare questa funzione. Ma il mio problema e' proprio che devo verificare se il file e' stato creato prima di un ora.
Ciao e scusa per le mie grandi perplessita'
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:26   #10
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Allora usa -mmin e specifica i minuti, come è scritto nella manpage e come ti ho già suggerito
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:28   #11
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
Avevo gia' provato, ma guarda il risultato:
Codice:
[root@probe3 tmp]# find ./ -type f -name psql -mmin +60;
./psql
You have new mail in /var/spool/mail/root
[root@probe3 tmp]# find ./ -type f -name psql -mmin +50;
./psql
[root@probe3 tmp]# find ./ -type f -name psql -mmin +65;
./psql
[root@probe3 tmp]# find ./ -type f -name psql -mmin +10;
./psql
[root@probe3 tmp]# find ./ -type f -name psql -mmin +1000;
./psql
Lo trova sempre....
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:31   #12
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da magix2003
Avevo gia' provato, ma guarda il risultato:
Codice:
[root@probe3 tmp]# find ./ -type f -name psql -mmin +60;
./psql
You have new mail in /var/spool/mail/root
[root@probe3 tmp]# find ./ -type f -name psql -mmin +50;
./psql
[root@probe3 tmp]# find ./ -type f -name psql -mmin +65;
./psql
[root@probe3 tmp]# find ./ -type f -name psql -mmin +10;
./psql
[root@probe3 tmp]# find ./ -type f -name psql -mmin +1000;
./psql
Lo trova sempre....
Certo tutte quelle corrispondenze sono soddisfatte. 1000 minuti sono meno di 17 ore; il file psql ha circa 18 ore e mezzo in questo momento.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:35   #13
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Se vuoi trovare i file modificati da non più di un'ora, utilizza -mmin -60. Puoi anche specificare un intervallo:
find -mmin +60 -mmin -120 trova tutti i file modificati tra una e due ore fa.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:35   #14
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
Scusami sono proprio un idiota, comunque se io volessi eseguire uno script solo quando il file ha piu' di un ora dovrei modificare il ciclo while o?
Quote:

#!/bin/bash

(find [parametri...]) | while read fname
do
# fai quello che vuoi con "$fname"
done
Qualcosa del tipo:
while read <> fname?
Ciao e grazie mille
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:38   #15
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da magix2003
Scusami sono proprio un idiota, comunque se io volessi eseguire uno script solo quando il file ha piu' di un ora dovrei modificare il ciclo while o?

Qualcosa del tipo:
while read <> fname?
Ciao e grazie mille
No la ricerca è effettuata tutta dal find, che scrive le corrispondenze su stdout. In pipe, redirigi lo stdout al ciclo while, che si occupa di leggere l'input riga per riga mettendole di volta in volta nella variabile specificata.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:48   #16
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
Mi sa che non ho ancora capito e non mi sono spiegato bene.
Io ho provato a eseguire questo script:
Codice:
#!/bin/bash
(find ./ -type f -name psql -mmin +1000;)|while read psql
do
echo "sto leggendo"
done
E in output mi ha dato l'echo correttamente. Ma io vorrei che se il file e' piu vecchio di un ora(cioe' -mmin +1440) mi scriva sto leggendo, cioe' il contrario di adesso
ciao e scusami sempre di piu
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:53   #17
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da magix2003
Mi sa che non ho ancora capito e non mi sono spiegato bene.
Io ho provato a eseguire questo script:
Codice:
#!/bin/bash
(find ./ -type f -name psql -mmin +1000;)|while read psql
do
echo "sto leggendo"
done
E in output mi ha dato l'echo correttamente. Ma io vorrei che se il file e' piu vecchio di un ora(cioe' -mmin +1440) mi scriva sto leggendo, cioe' il contrario di adesso
ciao e scusami sempre di piu
Hai specificato: "se il file è più vecchio di 1000 minuti, scrivi sto leggendo". E infatti lui scrive, in quanto psql è più vecchio di 1000 minuti.
nb un'ora sono 60 minuti, non 1440
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 09:57   #18
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
Si questo lo ho capito io vorrei che la condizione fosse se piu vecchio di un giorno cioe' 1440 esegui, mentre adesso e' se piu' giovane di un giorno esegui. Hai capito cosa intendo?
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 10:04   #19
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Certo che -mmin +1440 non ti restituisce nulla, psql _ancora_ non è vecchio di un giorno (24 ore).
Aspetta fino alle 5 di questo pomeriggio e vedrai

(nb se vuoi proprio intendere "i file di ieri", a prescindere dalle ore di differenza, nella info page trovi la soluzione )
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2005, 10:12   #20
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
Avevi ragione tu
Pero' io vorrei fare in modo che controlli se e' minore o = ad un ora....
Bye
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Auto elettriche: dalla Cina il prototipo...
Più di 2.000 operai cinesi e fond...
ECOVACS DEEBOT T50 MAX PRO OMNI scende d...
La Cina è 'nanosecondi dietro' ag...
Scontro tra robot low-cost: Eureka NERE1...
Dreame L40 Ultra AE crolla di prezzo su ...
Russia, roadmap fino al 2037 per sistemi...
Ecovacs X9 PRO OMNI, da 1.199€ a 799€ og...
Helsing CA-1 Europa: il nuovo drone da c...
Windows 10 riceve l'ultimo aggiornamento...
Oggi sono questi i 3 migliori PC portati...
Amazon, Google e la sudditanza verso NVI...
AMD Instinct MI450X fa paura a NVIDIA? S...
DJI perde la causa negli Stati Uniti: co...
Leonidas abbatte 49 droni in un colpo so...
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: 09:19.


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