Puncte:0

Găsiți fișiere modificate între 2 date din directorul sursă (recursiv) și copiați-le în directorul țintă cu aceeași structură de directoare

drapel ma

Încerc să copiez fișierele din sursă în folderul țintă care a fost modificat între 2 date,

#!/usr/bin/ksh

source=/home/Amal/DELTA/SOURCE

target=/home/Amal/DELTA/TARGET

cd $sursă

găsiți ./ -type f -newermt "2021-07-08 00:00:00"! -newermt „2021-09-18 23:59:55” -printf „%h:%p:\0” |

în timp ce IFS=":" citește fișierul cale; do

cp "$fișier" "$țintă"/"$cale"

Terminat

NOTĂ: Sursa și directorul au deja aceeași structură de directoare. Trebuie doar să copiez fișierele la fel ca directorul SOURCE.

Când execut acest script, nicio modificare în folderul TARGET.

drapel hr
Introduceți date delimitate de valori nule în buclă, dar `read` a afaik ksh se așteaptă implicit la date delimitate de linii noi
Amala avatar
drapel ma
@Steeldriver - Chiar și după eliminarea \0 din comanda find, nicio modificare. Fișierele nu sunt copiate în TARGET.
drapel hr
@Amala ar trebui să **înlocuiți** `\0` cu `\n` în `printf` - sau să comutați la bash unde `read -d ''` poate fi folosit pentru a citi „linii” delimitate de nul.
Amala avatar
drapel ma
@steeldriver - Mulțumesc mult. Înlocuirea \0 cu \n a funcționat.
Puncte:0
drapel cn

O modalitate ar putea fi utilizarea rsync cu --include-din-fișier opțiune. rsync este un utilitar versatil de copiere a fișierelor care va copia implicit structurile directoarelor. Cu --include-din-fișier opțiune, puteți indica rsync la o listă, un fișier text, care determină fișierele care ar trebui incluse în copie. O astfel de listă poate fi creată cu găsi comanda.

Deci mai întâi rulați găsi pentru a localiza fișierele dorite și a le lista într-un fișier text. Apoi folosiți rsync pentru a copia doar aceste fișiere. Ușor de scriptat odată ce ați făcut-o să funcționeze, evident.

Amala avatar
drapel ma
rsync nu este disponibil pe serverul nostru de aplicații (Linux Server).
vanadium avatar
drapel cn
Acestea sunt informații destul de importante pe care poate doriți să le adăugați la întrebarea dvs. Folosiți „editați”. Voi lăsa răspunsul sus pentru că marea majoritate a utilizatorilor vor putea instala și utiliza rsync.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.