Puncte:0

Cum să automatizezi o lucrare pentru a muta cel mai recent fișier cu un nume de fișier secvenţial

drapel bw

Am fișiere într-un director care fac parte dintr-o structură de denumire secvențială. Doresc să automatizez o lucrare în care să găsesc cel mai recent fișier din această secvență și să-l copiez în alt director.

De exemplu. în /tmp/directory23 există nume de fișiere:

CEN_01 [Data modificată 31/05/2021]
CEN_02 [Data modificată 07.06.2021]
CEN_03 [Data modificată 14.06.2021]
CEN_04 [Data modificată 21/06/2021]
CEN_05 [Data modificată 28.06.2021]
CEN_06 [Data modificată 05/07/2021]

Doresc să automatizez o lucrare, în care găsesc cel mai recent fișier modificat CEN_06 și copiez fișierul într-un alt director.

Ma poate ajuta cineva va rog?

FedKad avatar
drapel cn
Uită-te la `man ls`. Secvența de comandă `last_file=$(ls -t | head -n1)` va atribui numele fișierului de care aveți nevoie într-o variabilă shell.
Puncte:1
drapel lb

Întrebarea ta are două părți, așa că le voi aborda separat. De asemenea, nu știu cât de confortabil sunteți cu Linux, așa că vă rog să-mi spuneți dacă aceste reguli sunt prea neclare.

  • găsiți cel mai recent fișier modificat CEN_06 și copiați fișierul într-un alt director : ar trebui să puteți face asta folosind ieșirea lui ls -lt, și apoi prind primul rezultat. După câteva căutări, următorul lucru pare să funcționeze: ls -t | cap -n1 (editare: mulțumesc lui @FedonKadifeli pentru această comandă). Pentru a copia un fișier, cp comanda este ceea ce cauți.
  • Vreau să automatizez un job : o modalitate de a automatiza lucrurile în Linux este să folosești crontabs. Ar trebui să poți face ce vrei folosindu-le. Vă recomand să citiți omul pe acest subiect om 5 crontab. Practic ai pus un .SH arhivați comenzile pe care doriți să le executați, iar apoi crontab o va automatiza pentru dvs. la intervale date.
FedKad avatar
drapel cn
De ce utilizați această secvență de comandă foarte lungă, în timp ce un simplu `ls -t | head -n1` ar putea face treaba cu ușurință?
drapel uz
Jos
@FedonKadifeli Și mai bine, deoarece comanda lui Malo tinde să imprime un spațiu suplimentar la începutul numelui fișierului.
drapel hr
... sau folosiți `zsh`, unde nu trebuie să vă bazați pe analiza fragilă a ieșirii ls și, în schimb, puteți utiliza un glob de shell calificat precum `CEN_*(om[1])`
Malo Maisonneuve avatar
drapel lb
@FedonKadifeli Mulțumesc! Asta e mult mai bine. Îmi voi actualiza comanda mult prea lungă :)

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.