Jsem v linuxu nový a moc toho o linuxových příkazech nevím.
Můj scénář je takový, že mám v adresáři tolik zdrojových souborů java s různými
názvy balíčků.
Chci přesunout všechny tyto zdrojové soubory java do jejich příslušného adresáře balíčku
.
V jakémkoli zdrojovém souboru java je na prvním řádku příkaz package, kterému může
nebo nemusí předcházet komentář.
Chci tedy napsat skript shellu, který analyzuje řádek balíčku pro
všechny soubory .java v aktuálním adresáři a poté přesune tento soubor java do
jeho příslušného adresáře balíčku.
Aktuální situace:
directory1
|- Class1.java (package : com.pkgA)
|- Class2.java (package : com.pkgB)
|- Class3.java (package : com.pkgC.subpkg)
Co chci:
directory1
|- src
|- com
|- pkgA
|- Class1.java
|- pkgB
|- Class2.java
|- pkgC
|- subpkg
|- Class3.java
Příklad zdrojového souboru:
//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");
}
}
Přijatá odpověď:
#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
Zvedněte okno ve 20.04 kliknutím, aniž byste klikli na některé z tlačítek uvnitř (zakázat „proklikávání“)?
Chyba při vytváření swapového prostoru pomocí Mkswap?