Pregunta

¿Hay alguna forma de renombrar archivos por lotes en subdirectorios?

Por ejemplo:

Cambie el nombre de * .html a * .htm en una carpeta que tenga directorios y subdirectorios.

¿Fue útil?

Solución

Símbolo del sistema de Windows: (si está dentro de un archivo por lotes, cambie% x a %% x)

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

Esto también funciona para cambiar el nombre de la mitad de los archivos

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

Otros consejos

Para Windows, esta es la mejor herramienta que he encontrado:

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

Puede hacer cualquier cosa Y tiene el fregadero de la cocina.

Para Linux, tienes una gran cantidad de lenguajes de scripting y shells para ayudarte, como las respuestas anteriores.

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

En 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)

En Bash, puedes hacer lo siguiente:

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

Estoy seguro de que hay una forma más elegante, pero esto es lo primero que me vino a la cabeza:

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

Si tiene archivos for (creo que viene con Windows XP y 2003 y más nuevos), puede ejecutar:

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

En Linux, puede usar el comando ' rename ' para renombrar archivos en lote.

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 , que es una aplicación de administrador de archivos, te permite enumerar y amp; seleccione todos los archivos dentro de su directorio & amp; subdirecciones, entonces puede ejecutar cualquiera de las operaciones de comandante total en ellos. uno de ellos es: cambiar el nombre de los archivos seleccionados.

AWK en Linux. Para el primer directorio, esta es su respuesta ... Extrapolar llamando recursivamente a awk en dir_path, tal vez escribiendo otro awk que escriba este awk exacto a continuación ... y así sucesivamente.

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

Para Windows, he creado una solución de VBScript litte conveniente con cambio de nombre basado en expresiones regulares y Arrastre y amplificación Apoyo de la gota. Pruébelo si lo desea: póngalo en un archivo vbs y coloque su carpeta en él en el Explorador.

En Windows, Rename hace una muy buen trabajo en eso Freeware, pero no de código abierto.

En Windows, puede encontrar la aplicación de código abierto C # renombrador de archivos masivos en https : //filerenamer.codeplex.com funciona con un simple archivo de excel . Proporcione un archivo de Excel con dos columnas de origen y destino a esta aplicación, y ya está.

En Unix, puede utilizar rnm :

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

O

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

Explicación:

  1. -ns : cadena de nombre (nuevo nombre). / n / es una regla de cadena de nombre que se expande al nombre de archivo sin la extensión.
  2. -ss : cadena de búsqueda (expresiones regulares). Busca archivos con coincidencia.
  3. -rs : reemplace la cadena del formulario /search_regex/replace_part/modifier
  4. -fo : modo de solo archivo
  5. -dp : profundidad del directorio (-1 significa ilimitado).
-fo -dp -1 *

Explicación:

  1. -ns : cadena de nombre (nuevo nombre). / n / es una regla de cadena de nombre que se expande al nombre de archivo sin la extensión.
  2. -ss : cadena de búsqueda (expresiones regulares). Busca archivos con coincidencia.
  3. -rs : reemplace la cadena del formulario /search_regex/replace_part/modifier
  4. -fo : modo de solo archivo
  5. -dp : profundidad del directorio (-1 significa ilimitado).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top