Come usare il comando rinomina in Linux

Contenuti

Laptop Linux che mostra un prompt bash

Familiarizza con il potere di rinominare i file del mondo Linux e fornisci mv—E te stesso— una pausa. Rename è flessibile, veloce e, A volte, ancora più facile. Ecco un tutorial di questo potente comando.

Che dire di mv?

Non c'è niente di sbagliato in mv . Il comando fa un buon lavoro, e si trova in tutte le distribuzioni Linux, su macOS e altri sistemi operativi simili a Unix. Per questo è sempre abilitato. Ma ogni tanto basta un bulldozer, non una pala.

il mv Il comando ha uno scopo nella vita ed è spostare i file. È un felice effetto collaterale che può essere utilizzato per spostare un file esistente entro un nuovo file, con un nuovo nome. L'effetto finale è rinominare il file, così otteniamo quello che vogliamo. Ma mv non è uno strumento dedicato per la ridenominazione dei file.

Rinomina un singolo file con mv

Utilizzo mv rinominare un tipo di file mv, Uno spazio, il nome del file, uno spazio e il nuovo nome che vuoi che abbia il file. Quindi premi Invio.

Puoi usare ls per verificare che il nome del file sia stato modificato.

mv vecchio file.txt nuovo file.txt
ls *.txt

Rinomina più file con mv

Le cose si complicano quando vuoi rinominare più file. mv non ha la possibilità di rinominare più file. Devi ricorrere all'uso di alcuni ingegnosi trucchi di bash. Va bene se conosci qualche riga di comando di livello medio fu, ma la complessità di rinominare più file con mv contrasta con la facilità d'uso mv rinominare un singolo file.

Le cose si intensificano rapidamente.

Diciamo che abbiamo una directory con una serie di file, di diverso genere. Alcuni di questi file hanno un'estensione “.Alcuni di questi file hanno un'estensione”. Alcuni di questi file hanno un'estensione “.prg”.

Come combattiamo?? mv farlo per noi? Diamo un'occhiata agli archivi.

ls * .prog -l

Ecco un modo per farlo che non richieda la scrittura di un vero file di script bash.

per f in *.prog; fare mv -- "$F" "${f%.prog}.prg"

Ha funzionato? Esaminiamo i file e vediamo.

ls *.pr*

Quindi, sì, ha funzionato. Alcuni di questi file hanno un'estensione “.prg” Alcuni di questi file hanno un'estensione “.Alcuni di questi file hanno un'estensione” Alcuni di questi file hanno un'estensione.

Cosa è appena successo?

Cosa ha fatto davvero quel lungo comando?? Analizziamolo.

per f in *.prog; fare mv -- "$F" "${f%.prog}.prg"

Alcuni di questi file hanno un'estensione “.Alcuni di questi file hanno un'estensione” Alcuni di questi file hanno un'estensione, allo stesso tempo.

La parte successiva dice cosa farà l'elaborazione. fare. Sta usando mv per spostare ogni file in un nuovo file. Alcuni di questi file hanno un'estensione “.Alcuni di questi file hanno un'estensione”. Anziché, Alcuni di questi file hanno un'estensione “.prg”.

Ci deve essere un modo più semplice

Decisamente. È lui rename comando.

rename non fa parte di una distribuzione Linux standard, quindi dovrai installarlo. Ha anche un nome diverso in diverse famiglie Linux, ma funzionano tutti allo stesso modo. Dovrai solo sostituire il nome del comando appropriato in base al tipo di Linux che stai utilizzando.

su distribuzioni derivate Ubuntu e Debian che installi rename come questo:

sudo apt-get install rename

Nelle distribuzioni derivate da Fedora e RedHat, installare prename come questo. Alcuni di questi file hanno un'estensione “P” Alcuni di questi file hanno un'estensione, che significa Perl.

sudo dnf install prename

Per installarlo su Manjaro Linux usa il seguente comando. Nota che viene chiamato il comando rename perl-rename.

sudo pacman -Syu perl-rename

Facciamolo ancora

E questa volta useremo rename. Alcuni di questi file hanno un'estensione “.Alcuni di questi file hanno un'estensione”.

ls * .prog

Ora usiamo il seguente comando per rinominarli. Più tardi lo verificheremo con ls si ha funzionato. Ricordati di sostituire rename con il nome del comando appropriato per il tuo Linux se non stai usando Ubuntu o un Linux derivato da Debian.

rinomina 's/.prog/.prg/' *.prog
ls *.pr*

Ha funzionato, Alcuni di questi file hanno un'estensione “.prg” Alcuni di questi file hanno un'estensione “.Alcuni di questi file hanno un'estensione” Alcuni di questi file hanno un'estensione.

Cosa è successo in questo momento?

Spieghiamo quel po' di magia, in tre parti.

il primo parte è il nome del comando, rename (oh prename oh perl-rename , per le altre distribuzioni).

il più recente parte è *.prog, cosa dice rename Alcuni di questi file hanno un'estensione “.Alcuni di questi file hanno un'estensione”.

il metà parte imposta il lavoro che vogliamo fare su ogni nome di file. il s significa sostituto. Il primo termine (.prog) che cos'è rename cercherà ogni nome di file e secondo termine (.prg) è ciò che verrà sostituito.

La parte centrale del comando, o espressione centrale, è un Perl ‘frase normale'Ed è ciò che dà il rename padroneggia la tua flessibilità.

Modificare altre parti del nome di un file

Finora abbiamo cambiato le estensioni dei nomi dei file, modifichiamo altre parti dei nomi dei file.

Ci sono molti file di codice sorgente C nella directory. Alcuni di questi file hanno un'estensione “Alcuni di questi file hanno un'estensione”. Possiamo verificarlo con ls.

ls sl*.c

Alcuni di questi file hanno un'estensione “Alcuni di questi file hanno un'estensione” insieme a “Alcuni di questi file hanno un'estensione”. Il formato del comando ci è già familiare. Stiamo solo cambiando il termine di ricerca, il termine di sostituzione e il tipo di file.

rinomina 's/slang_/sl_' *.c

Alcuni di questi file hanno un'estensione “.C” Alcuni di questi file hanno un'estensione “Alcuni di questi file hanno un'estensione”. Alcuni di questi file hanno un'estensione “Alcuni di questi file hanno un'estensione” Alcuni di questi file hanno un'estensione, Alcuni di questi file hanno un'estensione “Alcuni di questi file hanno un'estensione”.

Possiamo controllare il risultato di quel comando ripetendo il ls comando dall'alto con gli stessi parametri:

ls sl*.c

Elimina parte del nome di un file

Possiamo eliminare una parte di un nome di file sostituendo il termine di ricerca con niente.

ls *.c
rinomina 's/sl_//' *.c
ls *.c

Possiamo vedere dal ls Alcuni di questi file hanno un'estensione “.C” sono preceduti da “Alcuni di questi file hanno un'estensione”. Eliminiamolo completamente.

il rename Il comando segue lo stesso formato di prima. sono preceduti da “.C”. sono preceduti da “Alcuni di questi file hanno un'estensione”, ma non c'è nessun termine di sostituzione. Due barre rovesciate senza niente tra di loro non significano niente, una stringa vuota.

rename sono preceduti da “.C” allo stesso tempo. sono preceduti da “Alcuni di questi file hanno un'estensione” sono preceduti da. Se trovato, non sarà sostituito da nulla. In altre parole, il termine di ricerca è stato rimosso.

Il secondo uso di ls sono preceduti da “Alcuni di questi file hanno un'estensione” sono preceduti da “.C”.

Limita le modifiche a parti specifiche dei nomi dei file

Usiamo ls sono preceduti da “sono preceduti da” nel nome del tuo file. Allora useremo rename sono preceduti da “parametro”. noi useremo ls ancora una volta per vedere l'effetto rename comando aveva in quei file.

ls * parametro *
rinomina 's/param/parameter' *.c
ls * parametro *

sono preceduti da “sono preceduti da” nel nome del tuo file. param.c, sono preceduti da “sono preceduti da” a cominciare del suo nome. sono preceduti da “sono preceduti da” a fine del suo nome, appena prima dell'estensione.

il rename sono preceduti da “sono preceduti da” sono preceduti da “parametro” sono preceduti da.

Il secondo uso di ls Il comando ci mostra che questo è esattamente quello che è successo. e “sono preceduti da” sono preceduti da, sono preceduti da “parametro”.

Possiamo usare i metacaratteri Perl per perfezionare il comportamento dell'espressione media. I metacaratteri sono simboli che rappresentano posizioni o sequenze di caratteri. Come esempio, ^ significa “sono preceduti da”, $ significa “sono preceduti da” e . significa qualsiasi singolo carattere (a parte un carattere di nuova riga).

Useremo l'inizio del metacarattere della stringa ( ^ ) per restringere la nostra ricerca all'inizio dei nomi dei file.

ls *stop*.c
rinomina 's/^parametro/valore/' *.c
ls *stop*.c
ls valore*.c

sono preceduti da “parametro” sono preceduti da.

I nostri rename il comando usa l'inizio della riga (^) metacarattere prima del termine di ricerca “parametro”. Questo dice rename considerare il termine di ricerca trovato solo se si trova all'inizio del nome del file. Il “parametro” metacarattere prima del termine di ricerca.

Verifica con ls, metacarattere prima del termine di ricerca “parametro” a fine il nome del file non è stato modificato, metacarattere prima del termine di ricerca “parametro” a cominciare metacarattere prima del termine di ricerca “valore”.

Il potere di rename risiede nel potere di Perl. Tutti i potere di Perl è a tua disposizione.

Cerca con i cluster

rename ha ancora più assi nella manica. Consideriamo il caso in cui puoi avere file con stringhe simili nei loro nomi. Non sono esattamente le stesse catene, quindi una semplice ricerca e sostituzione non funzionerà qui.

In questo esempio usiamo ls metacarattere prima del termine di ricerca “metacarattere prima del termine di ricerca”. Ce ne sono due, string.cy strangolare.c. Possiamo rinominare entrambe le stringhe contemporaneamente usando una tecnica chiamata raggruppamento.

L'espressione centrale di questo rename metacarattere prima del termine di ricerca “metacarattere prima del termine di ricerca” oh “metacarattere prima del termine di ricerca” metacarattere prima del termine di ricerca “ng”. In altre parole, metacarattere prima del termine di ricerca “catena” e “metacarattere prima del termine di ricerca”. metacarattere prima del termine di ricerca “metacarattere prima del termine di ricerca”.

ls str*.c
rinomina 's/(stri|stra)di/bang/' *.c
sei tu*.c

Usando ls una seconda volta conferma che string.c è diventato bang.c e strangle.c è ora bangle.c.

Utilizzo di traduzioni con cambio di nome

il rename Il comando può eseguire azioni sui nomi di file chiamate traduzioni. Un semplice esempio di traduzione sarebbe forzare un insieme di nomi di file in maiuscolo.

In rename comando sotto nota che non ne stiamo usando uno s/ per iniziare l'espressione centrale, stiamo usando y/. Questo dice rename non stiamo facendo una sostituzione; stiamo facendo una traduzione.

il a-z term è un'espressione Perl che significa tutti i caratteri minuscoli nella sequenza da aa z. Nello stesso modo, il A-Z term rappresenta tutte le lettere maiuscole nella sequenza dalla A alla Z.

metacarattere prima del termine di ricerca “se una delle lettere minuscole dalla a alla z si trova nel nome del file, se una delle lettere minuscole dalla a alla z si trova nel nome del file”.

se una delle lettere minuscole dalla a alla z si trova nel nome del file “.prg” se una delle lettere minuscole dalla a alla z si trova nel nome del file, usa questo comando:

rinomina 'y / il / dalla A alla Z /’ * .prg

ls * .PRG

il ls se una delle lettere minuscole dalla a alla z si trova nel nome del file “.prg” se una delle lettere minuscole dalla a alla z si trova nel nome del file. In realtà, per essere rigorosamente precisi, se una delle lettere minuscole dalla a alla z si trova nel nome del file “.prg”. se una delle lettere minuscole dalla a alla z si trova nel nome del file “.PRG”. Linux fa distinzione tra maiuscole e minuscole.

Possiamo invertire l'ultimo comando invertendo la posizione del a-z e A-Z termini nell'espressione centrale.

rinomina 'y / IL / il /’ * .PRG

ls * .prg

Non impari Perl in cinque minuti

Familiarizzare con Perl è tempo ben speso. Ma per iniziare a utilizzare le capacità di risparmio di tempo del rename comando, non hai bisogno di molta conoscenza di Perl per ottenere grandi potenziali benefici, semplicità e tempo.

impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.