Ok, ho un sacco di file che iniziano con un trattino, -. Il che non è così buono ... e voglio rinominarli. Nel mio caso particolare vorrei solo mettere un personaggio davanti a loro.
Ho trovato la seguente riga che dovrebbe funzionare, ma a causa del trattino non funziona:
for file in -N*.ext; do mv $file x$file; done
Se ne metto un echo
davanti, mv
ne ottengo un mucchio
mv -N1.ext x-f1.ext
mv -N2.ext x-f2.ext
Il che è corretto, tranne ovviamente penserà che il primo nome file sia opzioni. Quindi quando rimuovo echo
ed eseguo ottengo un sacco di
mv: illegal option -- N
Ho provato a cambiarlo in
for file in -N*.ext; do mv "$file" "x$file"; done
ma sembra che le virgolette vengano semplicemente ignorate. Ho provato a usare virgolette singole, ma poi la variabile non è stata espansa ... Cosa devo fare qui?
Aggiornamento: ora ho anche provato a citare le virgolette. Come questo:
for file in -N*.ext; do mv '"'$file'"' '"'x$file'"'; done
E quando lo faccio eco, sembra corretto, ma quando lo eseguo effettivamente ottengo
mv: rename "-N1.ext" to "x-n1.ext":: No such file or directory
Non ho idea di come farlo ora ... sospiro