Come si spostano i numeri nei nomi dei file, in un'operazione di ridenominazione batch?


13

Ho cercato di capire come rinominare i file nelle ultime ore.

Ho 2000 file che sono così:

file.1.pdb
file.2.pdb
file.3.pdb

Vorrei rinominare questi file in qualcosa del tipo:

file.pdb.1
file.pdb.2
file.pdb.3

Non intendevi bash ?
avazula,

4
@avazula No, per favore leggi questo articolo: en.wikipedia.org/wiki/Batch_renaming
Ali Razmdideh

@PerlDuck sì;)
Ali Razmdideh


2
Ehi elettori stretti - pensate davvero che abbiamo solo una domanda nel tag [rinominare in batch]? C'è qualcosa nel post collegato che aiuta effettivamente con l'attività in questa domanda, tranne l'idea di utilizzare rename? Mi sembra che se una domanda di ridenominazione in batch abbia dettagli specifici, dovremmo solo fornire risposte specifiche ad essa.
Zanna,

Risposte:


15

Se hai renameinstallato, puoi usare

rename -n 's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # just watch what WOULD happen
rename    's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # actually rename the files

Il comando renamepuò essere installato tramite

sudo apt install rename

11

Attraverso mmv(rinominare più file con motivi jolly) è semplicissimo:

mmv '*.*.*' '#1.#3.#2' *.pdb

o zmvdi zshconchiglia; è un modulo che consente di rinominare; vedi esempi ZMV :

zmv -w '*.*.*' '$1.$3.$2' *.pdb

3
Entrambi mmve zmvsembrano piuttosto esotici per me. Ti dispiace elaborare un po 'cosa sono e cosa fanno?
PerlDuck,

2
Ho aggiunto un link alla loro manpage ed esempi.
αғsнιη

mmvè abbastanza bello. Sembra più adatto a questo tipo di ridenominazione rispetto rename, sebbene sia meno flessibile in termini di corrispondenza dei nomi.
JAB

11

Utilizzando Perl rename:

rename -n 's/(\.\d+)(\.pdb)/$2$1/' *.pdb

Spiegazione veloce:

  • *.pdbAbbina tutti i file che finiscono con .pdb. (Fatto dalla shell)
  • (\.\d+)Abbina un punto letterale, quindi una o più cifre decimali. Le parentesi creano un gruppo di corrispondenze.
  • $2$1 Invertire il primo e il secondo gruppo di partite.
  • -nNessuna azione (simulazione). Se l'output sembra buono, eseguire nuovamente il comando senza questo flag.

1
LOL. Stesso pensiero. Eri 48 secondi più veloce.
PerlDuck,

1
@PerlDuck Lol, sì, stesso pensiero. Anche le risposte si completano abbastanza bene: copri l'installazione, io copro la sintassi.
wjandrea,

7

Puoi usare questo script:

for i in `seq 1 2000`; do
mv file.$i.pdb file.pdb.$i
done

O questo comando amichevole copia-incolla:

for i in `seq 1 2000`; do mv file.$i.pdb file.pdb.$i; done

Per usare i comandi sopra, metti tutti i 2000 file in una cartella, quindi apri il terminale in quella directory, quindi esegui il comando sopra in essa.


5

Recentemente nautilus, il file manager predefinito, ha ricevuto una finestra di dialogo per rinominare i lotti. Non è ancora abbastanza potente per fare quello che vuoi. Ma per fortuna c'è thunar, un file manager alternativo che può essere installato. Con la finestra di dialogo Rinomina thunars puoi fare ciò che vuoi usando la GUI.

Primo thunar di installazione:

sudo apt install thunar

Avvia thunar, vai alla directory che contiene i tuoi file. Quindi selezionali tutti. Press F2.

Nella finestra di dialogo che si apre, selezionare nuovamente tutti i file. Cambia modalità in "Cerca e sostituisci" e in "Nome e suffisso". Seleziona "Espressione regolare". Ora usa quanto segue come ricerca e sostituisci schemi:

file\.(.+)\.pdb

e

file.pdb.$1

Infine, fai clic sul pulsante Rinomina.

Il vantaggio di questo modo è di ottenere un'anteprima visiva di ciò che accadrà prima di effettuare effettivamente la ridenominazione.

finestra di dialogo per rinominare thunar


1
È possibile fare in modo che la maggior parte dei programmi stampi messaggi in inglese prefissando il comando con LC_MESSAGES=POSIX, ad es LC_MESSAGES=POSIX free. Funziona allo stesso modo per le applicazioni grafiche anche se nel caso di applicazioni persistenti come Nautilus nella sua configurazione predefinita è necessario chiudere prima l'istanza precedente nautilus -q.
David Foerster,

@DavidFoerster grazie per la menzione, immagine sostituita.
Sebastian Stark,

3

Puoi usare renameda util-linuxper questo (il comando si chiama rename.ulin Ubuntu):

rename.ul .pdb '' *
rename.ul "file." "file.pdb." *

Questo rimuove prima l' .pdbestensione dall'estremità, quindi la reinserisce nel mezzo.


1
Abbastanza bello Non ne ero a conoscenza rename.ul. La sintassi è un po ', inaspettata, ma funziona davvero come fai pubblicità. Inoltre: ha anche un -ninterruttore (non toccare, dillo solo).
PerlDuck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.