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/filedos veces.
¿Hay una manera más rápida?

rename.renamesea una mejor solución porquerenamenunca 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 .renamees 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
sudopieza.sudo?sudoél se interpreta~como el directorio de inicio de la raíz.sudoelmv, pero nocd. Ver por qué es un shell cd incorporado y no se puede.sudoEl(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 (
~/.bashrcsi está usandobash):Luego, abra una nueva terminal o simplemente ejecute
source ~/.bashrcpara 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
pushdypopdaquí? ¿Cómo es esto mejor quecd ~/folder/subfolder/ && sudo mv file.txt file.sh?pushdpopdes usarcdy volver concd -.popdes mejor quecd ../../cuando esté disponible.(cd /path/to/there && mv x y)luego (con una subshell)sudoantespushd. 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.