Rinomina - cosa significa "s //" vs "y //"?


9

La pagina man offre due esempi:

rename 's/\.bak$//' *.bak
rename 'y/A-Z/a-z/' *

Quindi è s o y e poi /replaceThis/withThis

Cosa significano i principali s e y? Ci sono altre opzioni?

Risposte:


12

Nel primo caso:

rename 's/\.bak$//' *.bak

stai eseguendo un'espressione regolare rispetto ai nomi dei file e sostituendo la parte corrispondente delle espressioni (.bak alla fine del nome di un file) con la seconda espressione (che è vuota).

Nel secondo caso:

rename 'y/A-Z/a-z/' *

stai facendo una corrispondenza con lo spazio del modello di espressione regolare e stai traslitterando sulla destinazione. In altre parole, l'intervallo AZ viene modificato nell'intervallo az, rendendo i nomi dei file minuscoli.

Ti suggerisco di guardare la pagina man di sed per ulteriori comandi e maggiori dettagli. Credo che il comando 's' sia usato più spesso. Inoltre, regex (sezione 7) e la documentazione perl possono anche essere di aiuto. In particolare, ecco un tutorial su perl ed espressioni regolari.


Da man sed:

s / regexp / sostituzione /    
       Tentativo di abbinare regexp con lo spazio del pattern. Se successo
       ful, sostituisci quella porzione abbinata a sostituzione. Il
       la sostituzione può contenere il carattere speciale e fare riferimento a quello
       porzione dello spazio del motivo che corrispondeva e lo speciale
       sfugge da \ 1 a \ 9 per fare riferimento alla corrispondenza corrispondente
       sottoespressioni in regexp.

y / sorgente / destinazione /  
       Traslitterare i caratteri nello spazio del motivo che appaiono
       in origine al personaggio corrispondente in dest.

Grazie mille - non sono sicuro che indicare alla gente 'sed' sia la migliore idea data la sua moltitudine di implementazioni, specialmente tra qualsiasi distribuzione Linux e OSX
aaaaaa,

@aaaaaa Questo sito riguarda esclusivamente Ubuntu.
wjandrea,
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.