Es básicamente lo que dice en la tapa, para ambos.
mv
es una utilidad estándar para mover uno o más archivos a un objetivo determinado. Se puede usar para cambiar el nombre de un archivo, si solo hay un archivo para mover. Si hay varios, mv
solo funciona si el destino es el directorio y mueve los archivos allí.
Por mv foo bar
lo tanto, moverá el archivo foo
al directorio bar
(si existe) o cambiará el nombre foo
a bar
(si bar
no existe o no es un directorio). mv foo1 foo2 bar
solo moverá ambos archivos al directorio bar
, o se quejará si bar
no es un directorio.
mv
llamará a la rename()
función de biblioteca C para mover los archivos, y si eso no funciona (se están moviendo a otro sistema de archivos), copiará los archivos y eliminará los originales.
Si todo lo que tiene es mv
y desea cambiar el nombre de varios archivos, deberá usar un bucle de shell. Hay una serie de preguntas sobre eso aquí en el sitio, ver por ejemplo este , este , y otros .
Por otro lado, las diversas rename
utilidades renombran archivos, individualmente.
El rename
de util-linux que menciona hace una simple sustitución de cadena, por ejemplo rename foo bar *
, cambiaría foobar
a barbar
, y asdffoo
a asdfbar
. No , no , sin embargo, toma una expresión regular!
La utilidad de cambio de nombre de Perl ( o varias instancias de la misma ) toma una expresión de Perl para transformar los nombres de archivo. Lo más probable es que use un comando, donde el patrón es una expresión regular.s/pattern/replacement/
Tanto el cambio de nombre de util-linux como el cambio de nombre de Perl se pueden usar para mover archivos a otro directorio al mismo tiempo, haciendo los cambios apropiados al nombre del archivo, pero es un poco incómodo. Tampoco hace más que invocar rename()
los archivos, por lo que no funciona pasar de un sistema de archivos a otro.
En cuanto a lo rename
que tiene, puede depender de su distribución y / o de lo que haya instalado. La mayoría de ellos son compatibles rename --version
, así que úsalos para identificar cuál tienes.
type -a rename
yrename --version
?