GNU/Linux >> Tutoriales Linux >  >> Linux

creando un directorio desde el nombre del archivo y moviendo bash

No se permiten espacios en blanco alrededor del = en una tarea.

dir="${file%%.*}"

Por el contrario, los espacios en blanco son requeridos en una prueba.

if [ -e $dir ]; then
    ^       ^

En cuanto a las mejoras estilísticas, no está de más hacer un mkdir -p innecesario , para que puedas deshacerte del if declaración.

No se requieren comillas en una tarea, por lo que puede eliminarlas del dir= línea. Sin embargo, citar es una buena idea en cualquier otro lugar, así que no elimine las otras citas.

Podría ser bueno agregar un .* extra al bucle for. De esa forma, si ejecuta el script más de una vez, no intentará mover esos subdirectorios recién creados. Y un buen truco (aunque no necesariamente una mejora) es acortar BR*.* W0*.* a {BR,W0}*.* .

for file in {BR,W0}*.*; do
    dir=${file%%.*}
    mkdir -p "$dir"
    mv "$file" "$dir"
done

Linux
  1. Crear, eliminar y administrar directorios en Linux

  2. ¿Cómo mover todos los archivos (incluidos los ocultos) de un directorio a otro?

  3. ¿Obtener ruta completa desde dentro de Bash Script?

  4. ¿Extraer nombres de nombre de archivo en Bash?

  5. Comando de mover directorio de Linux

¿Por qué mi enlace simbólico crea un archivo y no una carpeta?

Creando clases y objetos usando bash scripting

Linux Bash:mueva varios archivos diferentes al mismo directorio

Exportar una variable desde bash y usarla en Python

Evite que 10.2 cree un directorio de Wolfram Mathematica en Linux

¿Cómo mover todos los archivos del directorio actual al directorio superior?