camscape - for excellent IT solutions itkb.ro - IT knowledge base

pentru tonti :: cautare, copiere, mutare fisiere modificate intr-un interval de timp definit

Catalin
Catalin T.
TitleCautare, copiere, mutare fisiere modificate intr-un interval de timp definit
Tagslinux, find, cp, mv, ls, find and move files
Desc.Linux, cautare si procesare in masa (bulk) fisiere modificate intr-un interval de timp (intre doua date calendaristice)
CodeKBCR0007 v1.0
Date 9 februarie 2016

Intrebarile la care veti afla raspunsul in acest tutorial sunt:

a) Cum pot afla ce fisiere care au fost modificate in folderul FOLDER, intre DATA_SCAN_START si DATA_SCAN_FINAL (intre doua date calendaristice)?

a1) Cum pot procesa aceste fisiere in masa (bulk), de exemplu sa fac o copie a acestora, sa le mut sau sa le sterg ?
 

Pentru aceste operatiuni avem la dispozitie programul find, disponibil nativ in orice distributie de Linux, fie ea de tip desktop sau server.


Considerente privind formatul de data introdus.

DATA_SCAN_START/FINAL poate fi scrisa in multe moduri acceptate de linux, pentru exemplul de astazi vom folosi formatul:

"YYYY-MM-DD HH24:MI" (ex: 2016-02-09 10:00)  si/sau formatul  "YYYY-MM-DD" (ex: 2016-02-09) care este un shortcut pentru 2016-02-09 00:00
 

Primul lucru care trebuie facut este navigare in FOLDER, mai exact in locatia in care se doreste cautarea/procesarea fisierelor.

$ cd /cale/catre/FOLDER


Afisare (listing-ul) fisiere modificare intr-un interval de timp (intre doua date calendaristice)

$ find -newermt "2016-02-08" ! -newermt "2016-02-09 23:59" -ls


Procesare fisiere modificate intr-un interval de timp

Deoarece metodele de procesare sunt specifice nevoii curente a utilizatorului, am sa ofer doar cateva exemple de baza, comune
 

Copiere fisiere modificate intr-un interval de timp, intr-un folder numit backup

$ find -newermt "2016-02-08" ! -newermt "2016-02-09" -exec cp {} backup \;

unde, cp este comanda de copiere iar backup este numele folderului unde vor fi copiate fisierele;


Copiere fisiere modificate intr-un interval de timp, intr-un folder numit backup, pastrand structura de foldere existenta

$ find -newermt "2016-02-08" ! -newermt "2016-02-09" -exec cp --parents \{\}  backup \;

unde, cp este comanda de copiere, backup este numele folderului unde vor fi copiate fisierele iar --parents specifica pastrarea structurii de foldere;


Mutare fisiere modificate intr-un interval de timp, intr-un folder numit incubator

$ find -newermt "2016-02-08" ! -newermt "2016-02-09" -exec mv {} incubator \;

unde, mv este comanda de mutare iar incubator este numele folderului unde vor fi mutate fisierele;

 

Spor la experimentat :)