Come rinominare un set di file in Ubuntu


1

Ho un progetto Tapestry in cui ho proprietà dipendenti dalla lingua e altri file

ls -alR | grep '_en\..*'

Quindi quanto sopra mi dà la lista dei risultati come

Chat_en.properties
User_en.vm
Home_en.tml

Ora ho bisogno di rinominare tutti quelli in _zz invece di _it . C'è un singolo comando dove posso rinominare quelli?

Risposte:


0

Un semplice Bash One-liner:

for f in *; do echo mv -- "$f" "${f//_en/_zz}"; done

Rimuovi il echo quando questo stampa ciò di cui hai bisogno. Utilizza sostituzione della sottostringa sul nome del file.


Con il rename comando che accetta le espressioni regolari di Perl puoi anche fare:

rename -n 's/_en/_zz/' *

Rimuovi il -n quando sei sicuro che rinominerà tutto correttamente.


Grazie. Ma ora io quando tu dici "f in "ottiene solo i file nella cartella in cui eseguo. Come posso dare la lista" ls -alR | grep '_en \ .. '" sono arrivato lì ?
dinesh707

L'avevo capito . Ho aggiunto $ (riga di comando) a quello. Grazie ancora
dinesh707

1
Perché hai bisogno del? ls … | grep … lì dentro? Il comando rinominerà solo i file o le cartelle che contengono _en Comunque. Non c'è bisogno di filtrarli prima o nulla. È un cattiva idea di analizzare l'output di ls per vari motivi. Puoi solo farlo for f in /path/to/folder/* pure.
slhck
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.