GNU/Linux >> Linux Esercitazione >  >> Linux

Come rinominare tutti i file con caratteri speciali e spazi in una directory?

Il -n flag è per

--no-act

Nessuna azione:mostra quali file sarebbero stati rinominati.

Quindi è normale se non hai modifiche.

Per quanto riguarda il tuo comando, per me funziona:

$ touch "a @ test"
$ ls
a @ test
$ rename -n 's/ |\$|@/_/g' *
a @ test renamed as a___test

Forse a seconda della tua shell, devi sfuggire al |

$ rename -n 's/ \|\$\|@/_/g' *

Oppure puoi usare il […] notazione per raggruppare i caratteri:

$ rename -n 's/[ @\$]/_/g' *

Potresti provare così:

for file in ./*Block*                                       
do echo mv "$file" "${file//[ ()@$]/_}"
done

Se sei soddisfatto del risultato, rimuovi il echo prima del mv per rinominare effettivamente i file.


alla ricerca di una bella sceneggiatura per rimuovere caratteri speciali e caratteri speciali tedeschi, sostituendoli con quelli universali per non rimuovere informazioni utili Ho aggiornato l'ultima versione della sceneggiatura che presentava alcuni problemi minori risultanti in:

#!/bin/bash

for file in ./*
do
  infile=`echo "${file:2}"|sed  \
         -e 's|"\"|"\\"|g' \
         -e 's| |\ |g' -e 's|!|\!|g' \
         -e 's|@|\@|g' -e 's|*|\*|g' \
         -e 's|&|\&|g' -e 's|]|\]|g' \
         -e 's|}|\}|g' -e 's|"|\"|g' \
         -e 's|,|\,|g' -e 's|?|\?|g' \
         -e 's|=|\=|g'  `
  outfileNOSPECIALS=`echo "${file:2}"|sed -e 's|[^A-Za-z0-9._-]|_|g'`
  outfileNOoe=`echo $outfileNOSPECIALS| sed -e 's|ö|oe|g'`
  outfileNOae=`echo $outfileNOoe| sed -e 's|ä|ae|g'`
  outfileNOue=`echo $outfileNOae| sed -e 's|ü|ue|g'`
  outfileNOOE=`echo $outfileNOue| sed -e 's|Ö|OE|g'`
  outfileNOAE=`echo $outfileNOOE| sed -e 's|Ä|AE|g'`
  outfileNOUE=`echo $outfileNOAE| sed -e 's|Ü|UE|g'`
  outfileNOss=`echo $outfileNOUE| sed -e 's|ß|ss|g'`
  outfile=${outfileNOss}
  if [ "$infile" != "${outfile}" ]
  then
        echo "filename changed for " $infile " in " $outfile
        mv "$infile" ${outfile}
  fi
done

exit

risultante in:

@don_crissti:Sta facendo gli hokus-pokus con l'infile poiché Linux avrebbe i suoi problemi con la gestione dei caratteri speciali quando si sposta il nome del file.


Linux
  1. Come trovare il numero di file in una directory e sottodirectory

  2. Come modificare tutte le occorrenze di una parola in tutti i file in una directory

  3. Come rinominare in blocco i file con codifica non valida o sostituire in blocco i caratteri codificati non validi?

  4. Posso rinominare i file in una directory con Vim?

  5. Come tarare i file con un ordine ordinato?

Come manipolare nomi di file con spazi e caratteri speciali in Linux

Rinomina tutti i file e i nomi delle directory in minuscolo in Linux

Come rinominare file e directory in Linux

Come escludere file e directory con Rsync

Come copiare file e directory in Linux

Come posso rinominare i file con spazi utilizzando la shell di Linux?