Sé cómo renombrar archivos en Unix:
$ mv ~/folder/subfolder/file.txt ~/folder/subfolder/file.sh
^-------this part------^ ^------this part-------^
Se tarda demasiado tiempo en repetir ~/folder/subfolder/file
dos veces.
¿Hay una manera más rápida?
rename
.rename
sea una mejor solución porquerename
nunca le pido que anule el archivo existente o no.También puede usar
rename
(parte del paquete util-linux).Consulte la página de manual de cambio de nombre para obtener más detalles.
fuente
{a,b}
funcionalidad de los shells .rename
es un programa completamente diferente, basado en perl. Ahí lo usaríasrename 's/txt$/sh/' ~/folder/subfolder/file.txt
.mmv
.Todo lo anterior es bueno. Esto también funcionaría:
fuente
sudo
pieza.sudo
?sudo
él se interpreta~
como el directorio de inicio de la raíz.sudo
elmv
, pero nocd
. Ver por qué es un shell cd incorporado y no se puede.sudo
El(
No. Debe dar la ruta completa al archivo para cambiarle el nombre. La única alternativa es moverse a la carpeta de destino antes de ejecutar
mv
:Alternativamente, podría escribir una pequeña función que cambie el nombre del archivo en el directorio de destino. Por ejemplo, agregue estas líneas a su archivo de inicialización de shell (
~/.bashrc
si está usandobash
):Luego, abra una nueva terminal o simplemente ejecute
source ~/.bashrc
para volver a leer el archivo de inicio y puede hacer:fuente
lmv()
función. No lo sabía :)Solo para ampliar la utilidad de la respuesta de cuonglm (NO tomar ningún crédito ya que me encanta su solución) y su respuesta es correcta.
El caso de uso es que a menudo queremos mover un archivo en una ubicación remota (el problema real), por ejemplo /folder/subfolder/configFile.dat TO configFile.dat.orig
Esta forma del comando agrega una extensión de archivo (no reemplaza la extensión original)
Explicado: "{, .orig}" significa reemplazar (nada) al final del nombre del archivo con (algo) ".orig"
O para eliminar una extensión de archivo (invertir el cambio de nombre)
Nota: Todavía en el tema "La forma más rápida de cambiar el nombre de los archivos sin volver a escribir la ruta del directorio"
fuente
Si. Si lo usas
bash
, lo hacessudo pushd ~/folder/subfolder/ && sudo mv ./file.txt ./file.sh && popd
.Lo que en realidad es más grande y puede fallar si perdió los permisos de acceso al directorio original cuando lo hizo
popd
.fuente
pushd
ypopd
aquí? ¿Cómo es esto mejor quecd ~/folder/subfolder/ && sudo mv file.txt file.sh
?pushd
popd
es usarcd
y volver concd -
.popd
es mejor quecd ../../
cuando esté disponible.(cd /path/to/there && mv x y)
luego (con una subshell)sudo
antespushd
. Entonces el comando completo debería serpushd ...dir && sudo mv old new && popd
. Como alternativa, se podría hacer(cd ...dir; sudo mv old new)
porque la ejecución en subshell se encargará de los cambios de directorio automáticamente.