¿Hay alguna manera de cambiar el nombre de los archivos por lotes en los subdirectorios?Cambiar el nombre de los archivos en los subdirectorios
Ejemplo:
Cambiar nombre * .html a * .htm en una carpeta que tiene los directorios y subdirectorios.
¿Hay alguna manera de cambiar el nombre de los archivos por lotes en los subdirectorios?Cambiar el nombre de los archivos en los subdirectorios
Ejemplo:
Cambiar nombre * .html a * .htm en una carpeta que tiene los directorios y subdirectorios.
símbolo del sistema de Windows: (Si dentro de un archivo por lotes, cambiar x% a %% x)
for /r %x in (*.html) do ren "%x" *.htm
Esto también funciona para cambiar el nombre del medio de los archivos
for /r %x in (website*.html) do ren "%x" site*.htm
Esto doesn No funciona si el nombre del directorio tiene espacios. – raven
@raven ahora debería funcionar –
Notablemente, esto también funciona para cambiar el nombre de la parte central del archivo. Por lo tanto, si todos sus archivos comenzaron con el sitio web ... y terminaron con .html, y desea cambiarles el nombre para comenzar con el sitio, así como cambiar la extensión, puede hacer: 'para/r% x en (sitio web * .html) do ren"% x "sitio * .htm' – jonnybot
En Bash, se puede 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 aquí es el primero que me vino en mi cabeza:
for f in $(find . -type f -name '*.html'); do
mv $f $(echo "$f" | sed 's/html$/htm/')
done
para ventanas , esta es la mejor herramienta que he encontrado:
se puede hacer cualquier cosa Y tiene el fregadero de la cocina con ella.
Para Linux, tiene una gran cantidad de lenguajes de scripting y shells para ayudarlo, al igual que las respuestas anteriores.
El script de Perl que publiqué funciona en Windows (lo probé en Windows). –
@BKB la mayoría de las instalaciones de Windows no vienen con perl. y parece absurdo instalar Perl solo para cambiar el nombre de los directorios. esta es una solución de barrera baja – moogs
¿Entonces instalar una aplicación que solo puede cambiar el nombre de los archivos es menos absurdo que instalar algo tan poderoso como perl? – RJFalconer
find . -regex ".*html$" | 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 Linux, es posible utilice el comando 'rename' para cambiar el nombre de los archivos por lotes.
AWK en Linux. Para el primer directorio, esta es su respuesta ... Extrapolar llamando de manera recursiva a awk en dir_path quizás escribiendo otro awk que escriba este awk exacto a continuación ... y así sucesivamente.
ls dir_path/. | awk -F"." '{print "mv file_name/"$0" dir_path/"$1".new_extension"}' |csh
Para Windows, he hecho un convenient litte VBScript solution con el cambio de nombre basado en expresiones regulares y arrastre & soltar apoyo. Pruébelo si lo desea; colóquelo en un archivo vbs y colóquelo en el Explorador.
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!
En Windows, The Rename hace un trabajo bastante bueno en eso. Freeware, pero no de código abierto.
Si tiene forfiles (que viene con Windows XP y 2003 y las nuevas cosas creo) que puede funcionar:
forfiles/S/M * .HTM/C "cmd/c s @file *. HTML"
Aquí hay más ejemplos con forfiles: https://www.windows-commandline.com/rename-file-extensions-bulk/ –
Total Commander que es una aplicación de administrador de archivos, permite obtener una lista & seleccionar todos los archivos dentro de sus dir & sub-directorios, a continuación, puede ejecutar cualquiera de las operaciones totales comandante en ellos. uno de ellos es: cambiar el nombre de los archivos seleccionados.
En Windows, se puede encontrar opensource sencilla C# archivos a granel Renamer aplicación en https://filerenamer.codeplex.com obras con un simple archivo de Excel . Proporcione un archivo de Excel con dos columnas fuente y destino a esta aplicación y listo.
En Unix, puede utilizar rnm:
rnm -rs '/\.html$/.htm/' -fo -dp -1 *
O
rnm -ns '/n/.htm' -ss '\.html$' -fo -dp -1 *
Explicación:
-ns
: string name (nombre nuevo). /n/
es una regla de cadena de nombre que se expande al nombre de archivo sin la extensión.-ss
: cadena de búsqueda (regex). Busca archivos con coincidencias.-rs
: sustituir cadena de la forma /search_regex/replace_part/modifier
-fo
: archivo único modo-dp
: profundidad del directorio (-1 significa sin límite).no existe dicho comando en ubuntu –
¿En qué idioma? –
Por lote, ¿quiere decir "lote a la vez" o en una forma .bat/.cmd/.sh? El primero no es una cuestión de programación, y en Windows, hay toneladas de utilidades gratuitas para eso. Este último necesita más precisión, al menos a qué sistema operativo se dirige. – PhiLho