Ich bin neu in Linux und weiß nicht viel über Linux-Befehle.
Mein Szenario ist, dass ich so viele Java-Quelldateien mit unterschiedlichen Paketnamen in einem Verzeichnis habe.
Ich möchte alle diese Java-Quelldateien in ihr jeweiliges Paketverzeichnis verschieben.
In jeder Java-Quelldatei ist die erste Zeile eine Paketanweisung, der möglicherweise ein Kommentar vorangestellt ist oder nicht.
Ich möchte also ein Shell-Skript schreiben, das die Paketzeile für alle Java-Dateien im aktuellen Verzeichnis analysiert und diese Java-Datei dann in das entsprechende Paketverzeichnis verschiebt.
Momentane Situation:
directory1
|- Class1.java (package : com.pkgA)
|- Class2.java (package : com.pkgB)
|- Class3.java (package : com.pkgC.subpkg)
Was ich möchte:
directory1
|- src
|- com
|- pkgA
|- Class1.java
|- pkgB
|- Class2.java
|- pkgC
|- subpkg
|- Class3.java
Beispielquelldatei:
//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");
}
}
Hier ist eine Python-Version:
Es verwendet
javalang
Parser, um Java-Quellcode zu analysieren. Ich war nur interessiert, wie es aussehen könnte. Die Regex-basierte Bash-Version aus der Antwort von @ RoVo sollte in Ordnung sein.quelle