Domanda

Esiste un modo per rinominare i file in batch nelle sottodirectory?

Ad esempio:

Rinomina * .html in * .htm in una cartella che ha directory e sottodirectory.

È stato utile?

Soluzione

Prompt dei comandi di Windows: (Se all'interno di un file batch, modifica da% x a %% x)

for /r %x in (*.html) do ren "%x" *.htm

Funziona anche per rinominare la metà dei file

for /r %x in (website*.html) do ren "%x" site*.htm

Altri suggerimenti

Per Windows, questo è lo strumento migliore che ho trovato:

http://www.1-4a.com/rename/

Può fare qualsiasi cosa E ha il lavello della cucina con esso.

Per Linux, hai una pletora di linguaggi di scripting e shell per aiutarti, come le risposte precedenti.

find . -regex ".*html<*>quot; | while read line;
 do 
    A=`basename ${line} | sed 's/html$/htm/g'`;
    B=`dirname ${line}`;
    mv ${line} "${B}/${A}";
 done

In python

import os

target_dir = "."

for path, dirs, files in os.walk(target_dir):
    for file in files:
        filename, ext = os.path.splitext(file)
        new_file = filename + ".htm"

        if ext == '.html':
            old_filepath = os.path.join(path, file)
            new_filepath = os.path.join(path, new_file)
            os.rename(old_filepath, new_filepath)

In Bash, puoi fare quanto segue:

for x in $(find . -name \*.html); do
  mv $x $(echo "$x" | sed 's/\.html$/.htm/')
done

Sono sicuro che esiste un modo più elegante, ma ecco la prima cosa che mi è saltata in testa:

for f in $(find . -type f -name '*.html'); do 
    mv $f $(echo "$f" | sed 's/html$/htm/')
done

Se hai forfile (viene fornito con Windows XP e 2003 e roba più recente credo) puoi eseguire:

forfiles / S / M * .HTM / C " cmd / c ren @file * .HTML "

Su Linux, puoi usare il comando ' rinomina ' per rinominare i file in batch.

In bash use command rename :)

 rename 's/\.htm$/.html/' *.htm

 # or

 find . -name '*.txt' -print0 | xargs -0 rename 's/.txt$/.xml/'

 #Obs1: Above I use regex \. --> literal '.'  and  $ --> end of line
 #Obs2: Use find -maxdepht 'value' for determine how recursive is
 #Obs3: Use -print0 to avoid 'names spaces asdfa' crash!

Total Commander che è un'app di gestione file, che ti consente di elencare & amp; seleziona tutti i file nella sua directory & amp; sottodirectory, quindi è possibile eseguire qualsiasi operazione del comandante su di esse. uno di questi è: multi-rinomina i file selezionati.

AWK su Linux. Per la prima directory questa è la tua risposta ... Estrapolare chiamando ricorsivamente awk su dir_path forse scrivendo un altro awk che scriva esattamente questo awk qui sotto ... e così via.

ls dir_path/. | awk -F"." '{print "mv file_name/"<*>" dir_path/"$1".new_extension"}' |csh

Per Windows, ho realizzato una soluzione VBScript litte conveniente con rinomina basata su regex e Drag & amp ; Rilascia supporto. Se vuoi, provalo - inseriscilo in un file vbs e rilascia la cartella su Explorer.

Su Windows, The Rename fa un piuttosto un buon lavoro in questo. Gratuito, ma non open source.

Su Windows, puoi scoprire la semplice applicazione opensource C # rinominatore di file di massa in https : //filerenamer.codeplex.com funziona con un semplice file excel . Dai un file Excel con due colonne sorgente e destinazione a questa applicazione ed è fatta.

Su Unix, puoi utilizzare rnm :

rnm -rs '/\.html$/.htm/' -fo -dp -1 *

O

rnm -ns '/n/.htm' -ss '\.html

Spiegazione:

  1. -ns : stringa del nome (nuovo nome). / n / è una regola della stringa del nome che si espande nel nome file senza l'estensione.
  2. -ss : stringa di ricerca (regex). Cerca i file con corrispondenza.
  3. -rs : sostituisce la stringa del modulo /search_regex/replace_part/modifier
  4. -fo : modalità solo file
  5. -dp : profondità della directory (-1 significa illimitato).
-fo -dp -1 *

Spiegazione:

  1. -ns : stringa del nome (nuovo nome). / n / è una regola della stringa del nome che si espande nel nome file senza l'estensione.
  2. -ss : stringa di ricerca (regex). Cerca i file con corrispondenza.
  3. -rs : sostituisce la stringa del modulo /search_regex/replace_part/modifier
  4. -fo : modalità solo file
  5. -dp : profondità della directory (-1 significa illimitato).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top