Usando gli strumenti StringSolver (windows e Linux bash) che elaborano con esempi:
filter fghfilea ok fghreport ok notfghfile notok; mv --all --filter fghfilea jklfilea
Calcola innanzitutto un filtro basato su esempi , in cui l'input è il nome del file e l'output (ok e notok, stringhe arbitrarie). Se il filtro avesse l'opzione --auto o fosse invocato da solo dopo questo comando, creerebbe una cartella ok
e una cartella notok
e invierebbe i file rispettivamente a loro.
Quindi usando il filtro, il mv
comando è uno spostamento semi-automatico che diventa automatico con il modificatore --auto. Usando il filtro precedente grazie a --filter, trova un mapping da fghfilea
a jklfilea
e quindi lo applica su tutti i file filtrati.
Altre soluzioni a una linea
Altri modi equivalenti di fare lo stesso (ogni riga è equivalente), quindi puoi scegliere il tuo modo preferito di farlo.
filter fghfilea ok fghreport ok notfghfile notok; mv --filter fghfilea jklfilea; mv
filter fghfilea ok fghreport ok notfghfile notok; auto --all --filter fghfilea "mv fghfilea jklfilea"
# Even better, automatically infers the file name
filter fghfilea ok fghreport ok notfghfile notok; auto --all --filter "mv fghfilea jklfilea"
Soluzione multi-step
Per scoprire attentamente se i comandi funzionano bene, puoi digitare quanto segue:
filter fghfilea ok
filter fghfileb ok
filter fghfileb notok
e quando sei sicuro che il filtro sia buono, esegui la prima mossa:
mv fghfilea jklfilea
Se si desidera verificare e utilizzare il filtro precedente, digitare:
mv --test --filter
Se la trasformazione non è quella che volevi (ad esempio anche mv --explain
se vedi che qualcosa non va), puoi digitare mv --clear
per riavviare i file in movimento o aggiungere altri esempi in mv input1 input2
cui input1 e input2 sono altri esempi
Quando sei sicuro, basta digitare
mv --filter
e voilà! Tutta la ridenominazione viene eseguita utilizzando il filtro.
NOTA BENE: sono un coautore di questo lavoro realizzato a fini accademici. Potrebbe anche esserci presto una funzione per la produzione di bash.