GNU/Linux >> Tutoriales Linux >  >> Linux

Archivo mv de Linux con nombre largo

Solución 1:

para un solo archivo intente

mv dir1/dir2/dir3/file.{txt,txt.old}

donde el X{a,b} construir expandir a Xa Xb , puede tener una vista previa usando

echo dir1/dir2/dir3/file.{txt,txt.old}

para ver si se ajusta a su necesidad.

nota:

  1. eso para múltiples archivos

    mv dir1/dir2/dir3/file{1,2,3}.{txt,txt.old}
    

es poco probable que se expanda a lo que desea. (esto se expandirá a una combinación de file.txt file1.txt.old file2.txt ...)

  1. {txt,txt.old} se puede acortar a {,.old} según comentario

  2. si el nombre del directorio no es ambiguo, se puede usar un comodín.

    mv *1/*2/d*/*.{,old}
    

para uso de archivos múltiples rename

rename -n s/txt/old.txt/ dir1/dir2/dir3/file*.txt 

suelta -n para tener un cambio de nombre efectivo.

Solución 2:

El comando rename cambia el nombre de todos los archivos coincidentes. Su objetivo principal es cambiar el nombre de varios archivos, pero si la expresión de Perl coincide solo con un archivo, cambiará el nombre solo de este único archivo. Para obtener detalles y la sintaxis específica de la distribución, lea la página de manual:man rename .

Ejemplo de uso:cambiar el nombre de "/ruta/archivo.txt" a "/ruta/archivo.txt.antiguo":

rename 's/file.txt/file.txt.old/g' /path/file.txt

Notación más corta (gracias a shalomb):

rename 's/$/.old/' /path/file.txt
rename '$_.=".old"' /path/file.txt

Para una ejecución en seco, use rename -n .

Se pueden encontrar más ejemplos y detalles en https://thepcspy.com/read/bulk-rename-files-in-ubuntu/

Solución 3:

Me gusta la solución de @archemar de usar la expansión {}, porque puede usarla cuando ya haya iniciado su línea de comando. Aquí hay algunas otras posibilidades para completar:

F="dir1/dir2/dir3/file.txt" ; mv "$F" "$F.old"

(las comillas solo son necesarias si tiene espacios u otros caracteres que separan palabras en el nombre)

mymv() {
    mv "$1/$2" "$1/$3"
}

mymv dir1/dir2/dir3 file.txt file.txt.old
mymv dir5/dir6/dir7 file.txt file.txt.old

Notas:

  • Esta es la sintaxis bash, es posible que esté usando otro shell
  • mymv puede ser cualquier cadena razonable, usé mymv para "mi jugada".
  • La definición de la función se puede poner en su .bash_profile

Otro:

cd dir1/dir2/dir3 ; mv file.txt file.txt.old ; cd -

pero

(cd dir1/dir2/dir3/ && exec mv file.txt file.txt.old)

(de @Adam y @CharlesDuffy) podría decirse que es mejor en caso de que el CD falle.

Solución 4:

Para un caso único, si no quiero cambiar mi directorio actual, podría usar una subcapa:

(cd dir1/dir2/dir3/ && mv file.txt file.txt.old)

Porque tú cd dentro de la subcapa, no ha cambiado su directorio en su caparazón real

Solución 5:

Si desea ingresar al subdirectorio para acortar el mv comando, pero desea volver al directorio actual después, hay dos formas de hacerlo. Una es poner el cd y mv en una subcapa (como ya se ha sugerido).

La otra es usar pushd y popd para cambiar de directorio:

pushd dir1/dir2/dir3/; mv file.txt file.txt.old; popd

El pushd el comando es como cd , excepto que primero inserta el nombre del directorio actual en una pila. popd elimina el nombre superior de la pila y cambia a ese directorio.


Linux
  1. Cambiar el nombre de un archivo en la terminal de Linux

  2. Mejore el rendimiento del sistema Linux con noatime

  3. Ordenar comando en Linux con ejemplos

  4. ¿Cómo escribir un archivo con C en Linux?

  5. Cómo eliminar un archivo con este nombre en Linux:-]???????q

Cómo trabajar con enlaces duros y suaves en Linux

Uso del comando Linux mv con ejemplos

Asegure Linux con el archivo Sudoers

Comando de montaje de Linux con ejemplos

Comando gawk de Linux con ejemplos

Comando make de Linux con ejemplos