Notas de Luis

Vamos a crear un script que ordene archivos de forma automática en función de la extensión que tengan:

#!/bin/bash
 
# Crear las carpetas si no existen
mkdir -p imagenes videos documentos
 
# Iterar sobre cada archivo en el directorio actual
for archivo in *
do
  # Obtener el nombre base del archivo sin la ruta
  nombre_base=$(basename "$archivo")
 
  # Obtener la extensión del archivo usando awk
  extension=$(echo "$nombre_base" | awk -F '.' '{print $NF}')
 
  # Mover el archivo a la carpeta correspondiente según su extensión
  case "$extension" in
    jpg|png)
      mv "$archivo" imagenes/
      echo "Movido $archivo a la carpeta imagenes"
      ;;
    mp4|mkv)
      mv "$archivo" videos/
      echo "Movido $archivo a la carpeta videos"
      ;;
    txt|doc)
      mv "$archivo" documentos/
      echo "Movido $archivo a la carpeta documentos"
      ;;
    *)
      echo "Archivo $archivo no se movió, extensión desconocida: $extension"
      ;;
  esac
done

También podríamos comprimir todas estas carpetas y después enviar dicho archivo comprimido a un servidor ftp:

#!/bin/bash
 
# Crear las carpetas si no existen
mkdir -p imagenes videos documentos
 
# Iterar sobre cada archivo en el directorio actual
for archivo in *
do
  # Obtener el nombre base del archivo sin la ruta
  nombre_base=$(basename "$archivo")
 
  # Obtener la extensión del archivo usando awk
  extension=$(echo "$nombre_base" | awk -F '.' '{print $NF}')
 
  # Mover el archivo a la carpeta correspondiente según su extensión
  case "$extension" in
    jpg|png)
      mv "$archivo" imagenes/
      echo "Movido $archivo a la carpeta imagenes"
      ;;
    mp4|mkv)
      mv "$archivo" videos/
      echo "Movido $archivo a la carpeta videos"
      ;;
    pdf|docx)
      mv "$archivo" documentos/
      echo "Movido $archivo a la carpeta documentos"
      ;;
    *)
      echo "Archivo $archivo no se movió, extensión desconocida: $extension"
      ;;
  esac
done
 
# Comprimir archivos
zip -r copia_seguridad.zip imagenes/ videos/ documentos/
 
# Detalles de conexión FTP
servidor='192.168.0.25'
usuario='mario-server'
clave='password123'
 
ruta_archivo_local=copia_seguridad.zip
archivo_remoto="/home/mario-server/copia_seguridad.zip"
 
# Subir archivo mediante curl
if curl -u "$usuario:$clave" -T "$ruta_archivo_local" "ftp://$servidor/$archivo_remoto"; then
  echo "Archivo subido exitosamente al servidor FTP."
  # Limpiar archivo zip local después de la subida
  rm "$ruta_archivo_local"
else
  echo "Error al subir el archivo al servidor FTP."
fi
computing/coding/bash/organizar_archivos_segun_su_extension.txt · Última modificación: por 127.0.0.1