GNU/Linux >> Tutoriales Linux >  >> Linux

Acceso directo de Shell/Bash para cambiar el nombre de los archivos en una carpeta

Hay prename , que le permite usar REGEX:

prename 's/^.*-doc-(.*\.txt)$/doc-$1/'  *.txt

Usa la opción -n para simular:

prename -n 's/^.*-doc-(.*\.txt)$/doc-$1/'  *.txt

Nota: Este es el enviado como rename en muchas distribuciones de Linux, pero no en todas, así que estoy usando el nombre canónico de la utilidad que viene con Perl.


Sugeriría algo como esto:

for i in *-doc-*.txt; do mv "$i" "${i/*-doc-/doc-}"; done

${i/*-doc-/doc-} reemplaza la primera ocurrencia de *-doc- con doc- .

Si necesita hacer más de un reemplazo (vea el comentario número 1), debe usar el ${var//Pattern/Replacement} variante. Si necesita reemplazar el comienzo del nombre, debe usar ${var/#Pattern/Replacement} , si necesita reemplazar el final (es decir, la extensión), debe usar el ${var/%Pattern/Replacement} forma.

Consulte Expansión de parámetros de Shell para obtener más detalles. Esta expansión es específica de bash.


Si tienes rename entonces, rename 's/^.*-doc-/doc-/' *.txt debería hacer el truco.


Si desea recurrir a subdirectorios, también hay:

find . -maxdepth N -type f -name "$pattern" | sed -e 'p' -E -e "s/$str1/$str2/g" | xargs -n2 mv

En el sistema que admita automáticamente expresiones regulares extendidas, puede omitir el -E .

Ventajas:

  • recursos en subdirectorios
  • puedes controlar la profundidad máxima de la recursividad
  • puede renombrar archivos y/o directorios (-escriba f|d)

Desventajas:

  • regexps un poco más complicadas, porque tienes que eliminar la ruta para llegar al nombre del archivo

(respuesta modificada desde aquí)


Linux
  1. ¿Eliminar todos los archivos/directorios excepto un archivo?

  2. ¿Script de Shell para mover archivos más antiguos?

  3. ¿La configuración en Bash para Globbing, para controlar si * coincide con los archivos de puntos?

  4. ¿Necesita un caparazón para Scp?

  5. ¿Expansión de nombre de ruta de Bash/shell para Mkdir, Touch, etc.?

¿Cuál es tu shell favorito para el trabajo de administrador de sistemas?

Shell Scripting para principiantes:cómo escribir Bash Scripts en Linux

Necesita un buen editor hexadecimal para Linux

Script bash:usar el comando de script desde un script bash para iniciar sesión

Contar todas las ocurrencias de una cadena dentro de todos los archivos en una carpeta

¿Cómo encuentro ayuda para el comando de punto `.` en *nix?