No he tenido mucho éxito en encontrar una versión de Linux de namemangler , que necesito cambiar el nombre de 1000 de los archivos para que sean legibles en Windows.
¿Alguien sabe de un programa de Linux que pueda hacer esto?
De lo contrario, un script podría funcionar, ya que solo necesito cambiar el nombre de todos los archivos de una carpeta a, digamos, los primeros 16 caracteres. Sospecho que vale la pena seguir la ruta del script, pero no estoy seguro de por dónde empezar.
Respuestas:
En Debian, Ubuntu y derivados, si ingresa
man rename
en un símbolo del sistema, obtendrá la página del manual para una utilidad de cambio de nombre que permite que se usen comandos arbitrarios de expresión regular tipo Perl en el cambio de nombre.Por ejemplo, esto acortará (truncando) todos los archivos en el directorio actual a una longitud de cinco:
Funciona capturando los primeros cinco caracteres y luego usándolos en la sustitución, eliminando el resto.
Otro ejemplo es acortar los nombres de archivo (sin extensión) a cinco caracteres mientras se preserva la extensión:
Captura dos grupos, el primero es los primeros cinco caracteres, el segundo es la extensión. Esto se convertiría
myCarefullyCraftedDocument.pdf
enmyCar.pdf
.Advertencia: Use esto con cuidado, preferiblemente en una copia de su directorio, o haciendo primero copias de seguridad. ¡¡Usted ha sido advertido!! Como mínimo, use
rename -n
primero, que le mostrará lo que se haría sin hacerlo realmente.fuente
Puede mover archivos en conflicto a otro directorio:
fuente
Puede escribir un script para acortar los nombres de los archivos y eliminar los caracteres que a Windows no le gustan en unas pocas líneas de bash. Advertencia, código no probado, escrito directamente en mi navegador.
Si necesita recurrir a subdirectorios, llame a un script de shell desde
find -depth -exec …
. O use zsh en lugar de bash; en zsh, se**/*(od)
expande a todos los archivos en el directorio actual, de forma recursiva, con archivos anidados más profundamente primero.fuente
Las secuencias de comandos Shell / python / perl para este tipo de cosas están bien, pero parece que una aplicación gui sería la mejor para usted, por lo que recomendaría pyRenamer , que puede hacer exactamente lo que desea, entre muchas otras cosas (operaciones comunes simples a través de ajustes preestablecidos [eliminando espacios, truncando el nombre de archivo de un punto a otro], búsqueda / reemplazo simple, expresiones regulares complicadas, vista previa, etc.
Su distribución podría incluso tenerla en su repositorio de software (Fedora sí).
fuente
Algunos sistemas no tienen el
rename
comando, así que, como alternativa a la respuesta de paxdiablo, a continuación se explica cómo hacer lo mismo conmv
.La
-b
bandera en movimiento crea una copia de seguridad de los archivos que serían eliminados o sobrescritos. Al cambiar el patrón global en el bucle for, puede ajustar en qué archivos se ejecuta, utilizándose*
solo para ejecutarse en todos los archivos.fuente
echo
y una tubería (podría ser muy costoso si tiene muchos archivos), use un heredoc o herestring en su lugar.eval 'echo $BASH_SUBSHELL'
yeval 'echo $BASH_SUBSHELL' | cat
.time
usando un bucle usandoecho $i | sed
y otro usandosed ... <<<$i
, y la hererestring tomó aproximadamente 2/3 del tiempo del eco.<<
comienza un <i> doc </i> aquí, que es de varias líneas y requiere delimitadores.<<<
crea una <i> cadena </i> aquí, que solo toma una variable / cadena. Probarlo,var=abc // cat<<<$var // cat <<$var
.Si necesita experimentar con el cambio de nombre de los archivos y tiene las bibliotecas de KDE instaladas en su sistema (o no le importa agregarlas), consulte krename.
Le permite hacer bastantes tareas de cambio de nombre simples directamente con sus herramientas y también permite expresiones regulares para situaciones más complicadas.
Le muestra una vista previa de los archivos renombrados a medida que crea las condiciones de cambio de nombre. También le permite cambiar el nombre de los mismos archivos nuevamente, lo cual es útil si desea hacer algo complicado donde hacerlo en etapas reduciría la complejidad de cada etapa a algo que pueda resolver rápidamente.
fuente
fuente