Come rinominare un gruppo di file con quello che sembra un percorso di file di Windows nei loro nomi


9

Ho un sacco di file con il nome del file incasinato. Tutti i nomi dei file hanno lo stesso inizio che sembrano essere le directory dei file di Windows. Il problema è che ci sono oltre 700 file e non voglio davvero passare attraverso e rinominarli manualmente tutti. Questi sono esempi dei nomi dei file (Nota: nessuno di questi ha directory di file):

G:some\really\long\file\path\then\the\name1.jpg
G:some\really\long\file\path\then\the\name2.png
G:some\really\long\file\path\then\the\filename.txt
G:some\really\long\file\path\then\the\file_name.mov
...

L'importante da asporto è che ogni file ha G:some\really\long\file\path\then\the\prima del nome del file che vorrei.

Quindi vorrei che i file sopra fossero simili:

name1.jpg
name2.png
filename.txt
file_name.mov

Ho provato il renamecomando e non ho avuto successo. Sono ancora nuovo con Linux e davvero non sono sicuro su come procedere o davvero su cosa Google. Qualsiasi aiuto sarebbe apprezzato.

Risposte:


18

Ho appena rimosso tutto fino all'ultima barra rovesciata con rename

$ rename -n 's/.*\\//' G*
rename(G:some\really\long\file\path\then\the\file_name.mov, file_name.mov)
rename(G:some\really\long\file\path\then\the\filename.txt, filename.txt)
rename(G:some\really\long\file\path\then\the\name1.jpg, name1.jpg)
rename(G:some\really\long\file\path\then\the\name2.png, name2.png)

Rimuovere -ndopo il test per rinominare effettivamente i file.

Appunti

  • -n non fare nulla, basta stampare ciò che sarà cambiato
  • s/old/newsostituire oldconnew
  • .* qualsiasi numero di qualsiasi personaggio
  • \\ La prima barra rovesciata è quella di sfuggire alla seconda.
  • Dato che i regex sono avidi, anche questa espressione .*\\mangia tutte le barre rovesciate precedenti.
  • Poiché gli ultimi due delimitatori //sono vuoti, tutto ciò che corrisponde nella parte di ricerca viene eliminato

Ho solo bisogno della prima riga o devo farlo per ogni file?
kingcobra1986,

hai solo bisogno della prima riga @ kingcobra1986, gli altri sono solo l'output. *corrisponde a tutti i file, ma mi permetta di cambiarlo in G*- fatto - quindi ora corrisponde a tutti i file che iniziano con Gla directory corrente e funzionerà su tutti in una volta. Se si trovano in più directory, possiamo occuparci anche di questo in vari modi
Zanna,

Ha funzionato Puoi spiegare cosa succede esattamente in quella linea?
kingcobra1986,

1
@ kingcobra1986 scusa, ho aggiunto delle note. Spero sia chiaro, in caso contrario, non esitare a chiedere di più!
Zanna,

Ah, mi piace l'idea di usare il .*\\ poiché .*
dell'avido

10

Puoi farlo in puro bashusando l' espansione dei parametri della shell .

${file##*\\}(cut-up-to-last-prefix) rimuove tutto dall'inizio del nome file fino all'ultima \visualizzazione.

for file in *; do
    mv -v "$file" "${file##*\\}";
done

I risultati della ridenominazione sono:

‘G:some\\really\\long\\file\\path\\then\\the\\file_name.mov’ -> ‘file_name.mov’
‘G:some\\really\\long\\file\\path\\then\\the\\filename.txt’ -> ‘filename.txt’
‘G:some\\really\\long\\file\\path\\then\\the\\name1.jpg’ -> ‘name1.jpg’
‘G:some\\really\\long\\file\\path\\then\\the\\name2.png’ -> ‘name2.png’

6

Se stai cercando soluzioni GUI , ci sono molte applicazioni di rinominazione di massa. Suggerirei Thunar , che è il file manager predefinito per Xfce. Viene fornito con un pratico strumento di ridenominazione di massa. È possibile installare Thunar eseguendo il seguente comando in Terminale:

sudo apt-get install thunar

Probabilmente sarai in grado di installare anche dal software Ubuntu.

Come usare l'utilità

  1. Dopo aver installato Thunar, avvia l' utilità Bulk Rename .
  2. Fai clic sull'icona + e aggiungi i file che desideri rinominare.
  3. Fai clic sulla casella a discesa appena sotto l'elenco dei file selezionati e seleziona Cerca e sostituisci .
  4. Nella casella Cerca: immettere G:some\really\long\file\path\then\the\(la parte di cui si desidera eliminare), lasciare vuota la casella Sostituisci con : . Dovresti vedere l'anteprima delle modifiche nella colonna Nuovo nome .
  5. Per applicare le modifiche fare clic sul pulsante Rinomina file .

Oltre a Cerca e sostituisci questa utility supporta le seguenti azioni:

  • Inserisci data / ora
  • Inserisci / Sovrascrivi
  • Numerazione
  • Rimuovi personaggi
  • Maiuscolo minuscolo

non ce n'è uno per nautilus (penso che esista!)? Sembra piuttosto eccessivo suggerire di installare un nuovo browser di file per questo scopo.
Zanna,

@Zanna Ce n'è uno nella v3.22, ma penso che non sia ancora disponibile nei repository Ubuntu.
pomsky,

2
Thunar è abbastanza utile e sembra coesistere bene con altri browser di file, quindi penso che valga la pena installarlo per questo scopo. Ma puoi espandere questa risposta con una spiegazione su come eseguire la ridenominazione in blocco in Thunar?
Eliah Kagan,

1
@EliahKagan ed è anche leggero
pomsky

Ben fatto, ora posso votare (ho un Xubuntu in cui posso provarlo anche :))
Zanna
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.