varios son renombrar programas predeterminados masivamente mac lista las extensiones extension cuales como cambiar archivos archivo macos terminal file-extension

macos - son - Cambiar extensiones de archivo para todos los archivos en un directorio OSX



lista de extensiones de archivos mac (9)

Podrías usar algo como esto:

for old in *.txt; do mv $old `basename $old .txt`.md; done

Haga una copia primero!

Tengo un directorio lleno de archivos con una extensión (.txt en este caso) que quiero convertir automáticamente a otra extensión (.md).

¿Hay un trazador de líneas terminal sencillo que pueda usar para convertir todos los archivos de este directorio a una extensión de archivo diferente?

¿O necesito escribir un script con una expresión regular?


cd $YOUR_DIR ls *.txt > abc mkdir target // say i want to move it to another directory target in this case while read line do file=$(echo $line |awk -F. ''{ print $1 }'') cp $line target/$file.md // depends if u want to move(mv) or copy(cp) done < abc


El terminal no es necesario para esto ... Simplemente resalte todos los archivos que desea cambiar de nombre. Haga clic derecho y seleccione "Renombrar ## elementos" y simplemente escriba ".txt" en el cuadro "Buscar:" y ".md" en el cuadro "Reemplazar con:".


En función de la respuesta seleccionada y más precisa anterior, aquí hay una función bash para la reutilización:

function change_all_extensions() { for old in *."$1"; do mv $old `basename $old ."$1"`."$2"; done }

Uso:

$ change_all_extensions txt md

(No pude encontrar la manera de obtener un formato de código limpio en un comentario sobre esa respuesta).


La forma preferida de Unix para hacer esto (sí, OS X se basa en Unix) es:

ls | sed ''s/^/(.*/)/.txt$/mv "/1.txt" "/1.md"/'' | sh

¿Por qué el bucle con for si ls por diseño recorre toda la lista de nombres de archivo? Tienes tuberías, úsalas. Puede crear / modificar no solo la salida utilizando comandos, sino también comandos (a la derecha, es decir, comandos creados por un comando, que es lo que Brian Kernighan, uno de los inventores de Unix, más le gustó en Unix), así que echemos un vistazo a el ls y el sed producen al quitar el tubo a sh :

$ ls | sed ''s/^/(.*/)/.txt$/mv "/1.txt" "/1.md"/'' mv "firstfile.txt" "firstfile.md" mv "second file.txt" "second file.md" $

Como puede ver, no es solo una línea, sino una secuencia de comandos completa, que además funciona al crear otra secuencia de comandos como salida. Así que simplemente suministremos la secuencia de comandos producida por el guión de una línea a sh , que es el intérprete de guiones de OS X. Por supuesto, funciona incluso para nombres de archivos con espacios.

Por cierto: cada vez que escribes algo en Terminal , creas un script, incluso si es solo un comando con una palabra como ls o date etc. Todo lo que se ejecuta en un shell Unix es siempre un script / programa, que es solo un ASCII- flujo basado (en este caso un flujo de instrucciones opuesto a un flujo de datos).

Para ver los comandos reales que se ejecutan por sh , solo agrega una opción -x después de sh , que activa la salida de depuración en el shell, por lo que verás que cada comando mv se ejecuta con los argumentos reales pasados ​​por el script del editor sed (sí, otro script dentro del script :-)).

Sin embargo, si te gusta la complejidad, incluso puedes usar awk y si te gusta instalar otros programas para hacer el trabajo básico, hay ren . Incluso conozco personas que preferirían escribir un guión de perl 50 líneas o más para esta simple tarea de todos los días.

Tal vez es más fácil en el buscador renombrar archivos, pero si está conectado de forma remota a una Mac (por ejemplo, a través de ssh ), no es posible usar el buscador. Es por eso que la línea de cmd todavía es muy útil.


No es necesario escribir una secuencia de comandos simplemente pulse este comando

find ./ -name "*.txt" | xargs -I ''{}'' basename ''{}'' | sed ''s//.txt//'' | xargs -I ''{}'' mv ''{}.txt'' ''{}.md''


Alternativamente, puede instalar la utilidad ren (rename)

brew install ren ren ''*.txt'' ''#1.md''

Si desea cambiar el nombre de los archivos con prefijo o sufijo en los nombres de archivo

ren ''prefix_*.txt'' ''prefix_#1.md''


Tuve un problema similar cuando los archivos se llamaban .gifx.gif al final y esto funcionó en OS X para eliminar el último .gif :

for old in *.gifx.gif; do mv $(echo "$old") $(echo "$old" | sed ''s/x.gif//''); done


Para aquellos de ustedes que no son realmente buenos en la programación, pueden ver este artículo en wiki cómo .
Muestra muchos métodos de hacerlo que no implican codificación
y también puede consultar esta publicación sobre el cambio de extensiones de archivos .
Contiene una aplicación de consola que hace todo por ti.