Puncte:3

toate fișierele din folder au dispărut din cauza unei greșeli de tipar în timpul utilizării „mv”.

drapel jp

Sunt nou în bash și încercam să redenumesc toate fișierele dintr-un director la suma de control md5 în felul următor.

r@r:~g$ sh
$ pentru F în *; do
> mv "$F" "$(md5sum "$i")"
> gata
r@r:~/g$ ls
„d458d56dd4ab8c2b335da66e0bcab924 nRUNO5wt3JRN3pBt.mp4”

Am făcut o greșeală de tipar și rândul mv "$F" "$(md5sum "$i")" ar trebui să fie mv "$F" "$(md5sum "$F")" daca nu gresesc. Acum lipsesc toate fișierele din folder, cu excepția unui singur.

Fișierele sunt șterse sau mutate undeva? Există vreo modalitate de a le restaura?

Când încerc să reproduc situația într-un folder cu fișierul „1.png” în el, se întâmplă următoarele.

r@r:~/a$ sh
$ pentru F în *; do
> mv "$F" "$(md5sum "$i")"
> gata
md5sum: '': Nu există un astfel de fișier sau director
mv: nu se poate muta „1.png” în „”: nu există un astfel de fișier sau director
drapel cn
Dacă nu aveți o copie de rezervă, acele fișiere nu pot fi restaurate. Fiecare fișier a fost suprascris de cel următor, lăsând doar ultimul.
Puncte:5
drapel it

Probabil ca nu. Luați în considerare cum „funcționează” bucla dvs. și care mv comenzile sunt executate.

Pentru primul fișier, ați executat

mv the_file "$(md5sum $i)"

dar de atunci „$(md5sum „$i”)” NU se modifică pe măsură ce faci bucla, comanda pentru următorul fișier este:

mv the_2nd_file "$(md5sum "$i")"

înlocuind primul fișier. Primul fișier este șters, iar blocurile sale de disc sunt marcate „liber”.

Același lucru se întâmplă cu fișierele 3-Nth. Tot ce a mai rămas este ULTIMUL fișier, acum numit „$(md5sum "$i")".

Ai copii de rezervă?

Când scrieți comenzi puternice/periculoase care să fie aplicate unui grup de fișiere, utilizați ecou:

pentru f în * ; do
 echo mv $f "$(md5sum "$i")"
Terminat

ți-ar fi arătat eroarea.

BTW, numele variabilelor majuscule [A-Z] sunt folosite în mod tradițional pentru a comunica cu aplicațiile. Dacă utilizați nume [a-z] minuscule în scripturile dvs., nu vă veți suprapune niciodată.

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.