Puncte:-1

Cum se schimbă numele fișierelor în Shell Script?

drapel it

Am o sarcină să redenumesc o grămadă de fișiere în conținutul lor la rândul 1 colum2 (un șir). Fișierele nu au extensii. De asemenea, trebuie să adaug .pdb ca extensie la fiecare fișier.

pana acum am scris asta si nu merge :(

#! /bin/bash
pentru f în secvențe/*; do
mv "$f" "($ awk 'NR==1 {print=$2}').pdb";
Terminat

Sunt foarte nou în scriptul Shell și încă nu am idee cum să îl folosesc. Orice ajutor ar fi apreciat!

Someone avatar
drapel my
Pare o problemă cu temele
drapel it
Da, este temă pentru acasă, deși lectorul nu a oferit nici un exemplu sau material cum să selectezi fișiere, să folosești awk sau să faci aproape orice :)
Someone avatar
drapel my
Nu pare o problemă legată de Ubuntu (poate că rulați ubuntu, dar aceasta nu este o problemă cu Ubuntu, dar este o problemă cu scripting-ul bash), nu cred că acest lucru va primi un răspuns bine pe acest site , Deci postați întrebarea dvs. pe [Stack overflow](https://stackoverflow.com/) (BTW, această întrebare este la subiect)
drapel it
Ah ok multumesc!!
Liso avatar
drapel sd
Aceasta este o problemă cu universitatea sau cu h? Doar intrebam..
Will avatar
drapel id
Știu că aceasta este o opinie și nu este împărtășită de toată lumea... dar ce... este în neregulă cu o întrebare pentru acasă când OP a făcut un efort să o rezolve? Nu vreau să fac temele oamenilor pentru ei, dar pentru mine este în regulă să ajut dacă au încercat.
drapel it
Asta e o problemă de universitate.
Puncte:1
drapel hr

Câteva lucruri de reținut:

  1. sintaxa pentru substituirea comenzii este $(comandă) nu (comanda $)

  2. sintaxa pentru tipărirea celui de-al doilea câmp în awk este imprimați 2 USD nu print=2$

  3. trebuie să treceți numele fișierului ca argument pentru awk ex. awk 'NR==1 {printează $2}' "$f"

De asemenea, rețineți că noul fișier va fi creat relativ la directorul curent, mai degrabă decât la subdirector secvente (nu există suficiente detalii în întrebarea dvs. pentru a ști dacă acesta este rezultatul dorit sau nu).

Puncte:0
drapel it

Multumesc Steeldriver! Remarcile au ajutat foarte mult! Al treilea a fost adevăratul rezolvator de probleme! Deci, iată scenariul pe care l-am scris în final:

#! /bin/bash
pentru f în $(ls); do
mv "$f" "$( awk 'NR==1 {printează $2}' "$f" ).pdb";
Terminat

Dacă cineva are vreo modalitate „mai inteligentă” de a face asta, aș fi foarte bucuros să le aud.

Mulțumiri!

Pilot6 avatar
drapel cn
`f în $(ls)` nu are sens ;-)
drapel it
S-ar putea să nu aibă sens, dar a făcut treaba și asta e tot ce pot face în prezent. Dacă ai căi mai inteligente, ești binevenit să luminezi ființa inferioară cu creierul tău mare ;-)

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.