GNU/Linux >> Linux Esercitazione >  >> Linux

Scorciatoia Shell/Bash per la ridenominazione in blocco dei file in una cartella

C'è prename , che ti consente di utilizzare REGEX:

prename 's/^.*-doc-(.*\.txt)$/doc-$1/'  *.txt

Usa l'opzione -n simulare:

prename -n 's/^.*-doc-(.*\.txt)$/doc-$1/'  *.txt

Nota: Questo viene spedito come rename in molte distribuzioni Linux, ma non in tutte, quindi sto usando il nome canonico per l'utilità fornita con Perl.


Suggerirei qualcosa del genere:

for i in *-doc-*.txt; do mv "$i" "${i/*-doc-/doc-}"; done

${i/*-doc-/doc-} sostituisce la prima occorrenza di *-doc- con doc- .

Se hai bisogno di fare più di una sostituzione (vedi commento numero 1), devi usare il ${var//Pattern/Replacement} variante. Se devi sostituire l'inizio del nome devi usare ${var/#Pattern/Replacement} , se devi sostituire la fine (es:l'estensione) devi usare ${var/%Pattern/Replacement} modulo.

Vedere Espansione dei parametri della shell per ulteriori dettagli. Questa espansione è specifica per bash.


Se hai rename quindi, rename 's/^.*-doc-/doc-/' *.txt dovrebbe funzionare.


Se vuoi ricorrere alle sottodirectory, c'è anche:

find . -maxdepth N -type f -name "$pattern" | sed -e 'p' -E -e "s/$str1/$str2/g" | xargs -n2 mv

Sui sistemi che supportano automaticamente Regexp estese, puoi tralasciare -E .

Vantaggi:

  • ricorre in sottodirectory
  • puoi controllare la profondità massima della ricorsione
  • puoi rinominare file e/o directory (-type f|d)

Svantaggi:

  • regexp leggermente più complicate, perché devi eliminare il percorso per ottenere il nome del file

(risposta modificata da qui)


Linux
  1. Script per monitorare la cartella per i nuovi file?

  2. Rimuovere tutti i file/directory tranne un file?

  3. Script Shell per spostare i file più vecchi?

  4. L'impostazione in Bash per il globbing, per controllare se * corrisponde ai file Dot?

  5. Espansione del nome del percorso Bash/shell per Mkdir, Touch Etc?

Qual è la tua shell preferita per il lavoro di amministratore di sistema?

Script di shell per principianti - Come scrivere script Bash in Linux

Hai bisogno di un buon editor esadecimale per Linux

Script bash:utilizzo del comando script da uno script bash per la registrazione di una sessione

Conteggio di tutte le occorrenze di una stringa all'interno di tutti i file in una cartella

Come posso trovare aiuto per il comando punto `.` in *nix?