Puncte:0

Un script bash pentru a redenumi fișierele din diferite directoare simultan

drapel us

Dacă am un director numit /toate_imaginile, iar în interiorul acestui director există o mulțime de directoare, toate directoarele numite ca dish_num așa cum se arată mai jos. iar în interiorul fiecărui director de antene, există o imagine numită rgb.png. Cum pot redenumi toate fișierele imagine pentru a fi numele directorului său.

Inainte de

|
âââ farfurie_1
â âââ rgb.png
âââ farfurie_2
â âââ rgb.png
âââ farfurie_3
â âââ rgb.png
âââ farfurie_4
â âââ rgb.png
âââ farfurie_5
    âââ rgb.png

După

|
âââ farfurie_1
â âââ dish_1.png
âââ farfurie_2
â âââ dish_2.png
âââ farfurie_3
â âââ dish_3.png
âââ farfurie_4
â âââ dish_4.png
âââ farfurie_5
    âââ dish_5.png
Puncte:3
drapel hr

O buclă simplă de shell ar trebui să fie suficientă:

pentru d in dish_*; do 
  echo mv „$d/rgb.png” „$d/$d.png”
Terminat

sau (dacă trebuie să-l rulați din alt loc decât directorul care îl conține)

pentru d în cale/la/dish_*; do 
  f="${d##*/}.png"
  echo mv „$d/rgb.png” „$d/$f”
Terminat

Scoateți ecou odată ce ești mulțumit că va face ceea ce trebuie.


Dacă vrei să devii elegant, poți face așa ceva cu GNU paralel:

parallel echo mv {}/rgb.png {}/{/.}.png ::: path/to/dish_*

sau (dacă lista de argumente este prea lungă)

printf „%s\0” cale/către/dish_* | paralel --null echo mv {}/rgb.png {}/{/.}.png

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.