GNU/Linux >> Linux の 問題 >  >> Ubuntu

すべてのJavaソースファイルをそれぞれのパッケージディレクトリに移動するにはどうすればよいですか?

私はLinuxを初めて使用し、Linuxコマンドについてはあまり知りません。

私のシナリオでは、ディレクトリに
パッケージ名が異なるJavaソースファイルがたくさんあります。

これらすべてのJavaソースファイルをそれぞれのパッケージ
ディレクトリに移動したい。

どのJavaソースファイルでも、最初の行はパッケージステートメントであり、
コメントが前に付いている場合と付いていない場合があります。

したがって、私が必要としているのは、現在のディレクトリにあるすべての.javaファイルのパッケージ行を
解析し、そのjavaファイルをそれぞれのパッケージディレクトリに
移動するシェルスクリプトを作成することです。

現在の状況:

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

欲しいもの:

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

ソースファイルの例:

//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");    
    }
}

承認された回答:

#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. 拡張子に基づいて特定のファイルを移動する方法は?

  2. すべてのディレクトリを同じフォルダ内の単一のディレクトリに効率的に移動するにはどうすればよいですか?

  3. 「mv」コマンドを使用して、特定のディレクトリ以外のファイルを移動する方法は?

  1. *を介して隠しファイルを含むすべてのファイルを親ディレクトリに移動する方法

  2. 現在のディレクトリ内のすべてのファイルを chown/chmod する方法は?

  3. 一部を除くディレクトリ内のすべてのファイルを削除する方法は?

  1. すべてのファイル(非表示を含む)をあるディレクトリから別のディレクトリに移動するにはどうすればよいですか?

  2. 特定のフォルダ内の特定の拡張子を持つすべてのファイルを削除するにはどうすればよいですか?

  3. mv コマンドですべてのファイルとフォルダーを移動する方法