Come rinominare tutte le sottocartelle con un nome specifico


1

Come esaminare tutte le sottocartelle e rinominare tutte le cartelle denominate "Vecchia" in "Nuova"

Risposte:


1

Se hai zsh:

autoload zmv
zmv -QW '**/Old(/)' '**/New'
zmv -W '** / Vecchio' '** / Nuovo'

Qui autoload zmvcarica lo zmvscript fornito con zsh; zmv -W pattern replacementsignifica «per ogni corrispondenza ricordare il valore di tutti i caratteri jolly patterne sostituire i caratteri jolly corrispondenti replacementcon questo valore»; zmv -Qsignifica «consentire i qualificatori glob nel modello»; '**/Old'significa «trova tutti i file denominati« Vecchio »nella struttura nella directory corrente» e il (/)qualificatore glob limita «tutti i file» ad essere solo directory. Altre zmvopzioni utili :

  • -n: non fare nulla, basta stampare ciò che sarà fatto.
  • -i: mostra ogni riga da eseguire e chiedi se eseguirla
  • -f: forza la sovrascrittura dei file di destinazione

Se preferisci [ba] sh:

RnAll() { for f in "$1"/* ; do [ -d "$f" ] || continue ; ( RnAll "$f" "$2" "$3" ) ; [ "`basename $f`" \== "$2" ] && mv "$f" "`dirname $f`/$3" ; done }
RnAll . Old New

Questa è una soluzione sh quasi pura (o almeno bash), che non richiede altro che shell e coreutils.


1

Qualcosa come questo:

find . -type d -exec rename <rename options> \;

Le opzioni di ridenominazione varieranno a seconda di ciò renameche hai. Red Hat rinomina usa rename Old New {}, mentre i sistemi Debian / Ubuntu usano spesso "Perl rename", che usa questa sintassi:

rename 's/^Old$/New/' {} 

Questo cambierà solo le corrispondenze esatte per "Vecchio"; utilizzare s/Old/New/gse si desidera modificare tutte le occorrenze di "Vecchio" in "Nuovo", comprese più occorrenze in un unico nome utente.


I sistemi Debian / Ubuntu usano spesso "Perl rename", che userebbe questa sintassi: rename 's/^Old$/New/' {}... che cambierà solo le corrispondenze esatte per "Vecchio"; utilizzare s/Old/New/gse si desidera modificare tutte le occorrenze di "Vecchio" in "Nuovo", comprese più occorrenze in un unico nome utente.
Quack Quixote
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.