Saya baru mengenal linux dan tidak tahu banyak tentang perintah linux.
Skenario saya adalah, saya memiliki begitu banyak file sumber java dengan
nama paket yang berbeda dalam sebuah direktori.
Saya ingin memindahkan semua file sumber java ini ke direktori masing-masing paket
.
Dalam file sumber java, baris pertama adalah pernyataan paket, yang boleh
didahului dengan komentar.
Jadi yang saya inginkan adalah menulis skrip shell yang mengurai baris paket untuk
semua file .java di direktori saat ini dan kemudian pindahkan file java itu ke
direktori paket masing-masing.
Situasi saat ini:
directory1
|- Class1.java (package : com.pkgA)
|- Class2.java (package : com.pkgB)
|- Class3.java (package : com.pkgC.subpkg)
Yang saya inginkan:
directory1
|- src
|- com
|- pkgA
|- Class1.java
|- pkgB
|- Class2.java
|- pkgC
|- subpkg
|- Class3.java
Contoh file sumber:
//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");
}
}
Jawaban yang Diterima:
#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
Naikkan Jendela Di 20,04 Dengan Mengklik Tanpa Mengklik Tombol Di Dalamnya (nonaktifkan "klik-tayang")?
Kesalahan Membuat Ruang Swap Dengan Mkswap?