Rinominare tutti i file

Come rinominare tutti i file della directory corrente con un'estensione di .tgz a .tar.gz? Provai

find . -iname *.tgz --exec mv {} {}.tar.gz \; 

ma non funziona come previsto.

  • tunnel ssh per una connessione mysql
  • cp -R source_dir / * dest_dir / sovrascrive i file?
  • Trucchi di sicurezza della row di command
  • Cambio password con row di command su NetBSD
  • Come si installa ClearCase 7.1 su un server basato su Unix senza GUI e senza internet?
  • Crazy idea: Identificare se il sistema è inattivo quando si tratta di una scatola nera
  • Come faccio ad assicurarmi che entrambi i server e MYSQL abbiano lo stesso fuso orario?
  • Avviare la session dello schermo distaccato
  • 6 Solutions collect form web for “Rinominare tutti i file”

    È utile rename .tgz .tar.gz *.tgz

    http://linux.die.net/man/1/rename

     ls *.tgz | sed 's/\(.*\).tgz$/mv "&" "\1.tar.gz"/' | sh 
     for i in *.tgz; do mv "$i" "${i/.tgz}".tar.gz; done 

    rename è una bella. Ma si dovrebbe guardare per i derivati ​​Debian – non forniscono la stessa versione di altre distribuzioni.

    Debian / Ubuntu / amici:

     # rename 's/\.tgz$/\.tar.gz/ *.tgz 

    Tutti gli altri per quanto ne so – http://linux.die.net/man/1/rename

     # rename .tgz .tar.gz *.tgz 

    Potrebbe essere necessario fare qualcosa di simile:

     [rilindo@kvm0001 bar]$ ls -la total 8 drwxr-xr-x. 2 rilindo cgred 4096 Oct 20 23:16 . drwxr-xr-x. 8 rilindo cgred 4096 Oct 20 23:10 .. -rw-r--r--. 1 rilindo cgred 0 Oct 20 23:15 bar.txt -rw-r--r--. 1 rilindo cgred 0 Oct 20 23:15 baz.txt -rw-r--r--. 1 rilindo cgred 0 Oct 20 23:16 foo.txt [rilindo@kvm0001 bar]$ for i in `find . -type f -iname "*.txt"`; do j=`echo $i | sed 's/.txt$/.doc/'`; mv $i $j; done [rilindo@kvm0001 bar]$ ls -la total 8 drwxr-xr-x. 2 rilindo cgred 4096 Oct 20 23:16 . drwxr-xr-x. 8 rilindo cgred 4096 Oct 20 23:10 .. -rw-r--r--. 1 rilindo cgred 0 Oct 20 23:15 bar.doc -rw-r--r--. 1 rilindo cgred 0 Oct 20 23:15 baz.doc -rw-r--r--. 1 rilindo cgred 0 Oct 20 23:16 foo.doc [rilindo@kvm0001 bar]$ 

    Così con questa string di command:

     for i in `find . -type f -iname "*.txt"`; do j=`echo $i | sed 's/.txt$/.doc/'`; mv $i $j; done 

    Ottengo l'elenco dei file e per each elemento assegnare il nome del file con una nuova estensione a una variabile e rinominare each file a quella variabile.

    Questo, naturalmente, probabilmente non è uno script perfetto, ma credo che tu abbia l'idea.

    Raccommand 'mmv'. Abbastanza semplice e less sobject a errori rispetto a 'per' espressioni.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.