Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
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)
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


ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento Acer TravelMate P6 14 AI: il Copilot+ PC sotto i...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
Avalanche Studios, la software house che...
Tante novità in arrivo per OnePlu...
Novità per la smarthome da EZVIZ....
Intel SGX e AMD SEV-SNP aggirabili su pi...
Autovelox, parte il censimento ufficiale...
Adobe Premiere arriva su iPhone: l'app &...
Il Cybertruck di Tesla non può es...
Windows 11 25H2 è stato appena ri...
VMware, con la versione 9 di Cloud Found...
Area B e C Milano, stop alle auto benzin...
Huawei FreeBuds 7i arrivano in Italia: c...
Offerte Amazon Fire TV: smart TV per ogn...
iPhone 11 Pro Max e Apple Watch Series 3...
Toyota ha venduto solo 18 elettriche ad ...
Tutti i Ring in promo Amazon: videocitof...
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: 12:00.


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