GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo mover todos los archivos fuente de Java a su directorio de paquetes respectivo?

Soy nuevo en Linux y no sé mucho sobre los comandos de Linux.

Mi escenario es que tengo tantos archivos fuente de Java con diferentes
nombres de paquetes en un directorio.

Quiero mover todos estos archivos fuente de Java a su respectivo paquete
directorio.

En cualquier archivo fuente Java, la primera línea es la declaración del paquete, que puede
o no estar precedida por un comentario.

Entonces, lo que quiero es escribir un script de shell que analice la línea del paquete para
todos los archivos .java en el directorio actual y luego mueva ese archivo java a
su respectivo directorio de paquetes.

Situación actual:

directory1
|- Class1.java (package : com.pkgA)
|- Class2.java (package : com.pkgB)
|- Class3.java (package : com.pkgC.subpkg)

Lo que quiero:

directory1
|- src
   |- com
      |- pkgA
         |- Class1.java
      |- pkgB
         |- Class2.java
      |- pkgC
         |- subpkg
            |- Class3.java

Ejemplo de archivo fuente:

//This is single line comment
/* This is multi line comment
 * Any of these style comment may or may not be present
 */

package com.pkgA;

public class Class1 {
    public static void main(String[] args) {
        System.out.println("Hello");    
    }
}

Respuesta aceptada:

#Loop through the java files
for f in *.java; do

    # Get the package name (com.pkgX)
    package=$(grep -m 1 -Po "(?<=^package )[^; ]*" "$f")

    # Replace . with / and add src/ at the beginning
    target_folder="src/${package//.//}"

    # Create the target folder
    mkdir -p "$target_folder"

    # move the file to the target folder
    mv "$f" "$target_folder"

done

Ubuntu
  1. ¿Cómo mover archivos específicos según sus extensiones?

  2. ¿Cómo bajar un directorio?

  3. ¿Cómo mover todos los directorios a un solo directorio de manera eficiente en la misma carpeta?

  4. ¿Cómo mover (y sobrescribir) todos los archivos de un directorio a otro?

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

Cómo instalar archivos Deb (paquetes) en Ubuntu

Cómo crear un paquete de Ubuntu desde la fuente

Cómo encontrar un archivo en Linux en todos los directorios recursivamente

Cómo mover un directorio en Linux

Cómo encontrar todos los archivos de cero bytes en el directorio

Cómo mover todos los archivos y carpetas mediante el comando mv