Bash 在文件路径之前展平java项目目录结构

Bash 在文件路径之前展平java项目目录结构,bash,scripting,directory,flatten,Bash,Scripting,Directory,Flatten,我正在尝试编写一个脚本(最好是在bash中)来扁平化javaprojet目录结构,并在文件路径的前面加上前缀。例如: | src | org | apache | file2.java | file1.java 将导致: | src | org|apache|file2.java | org|file1.java 脚本应该是递归的,因为目录可能有许多子文件夹 cd src for i in $(find . - name '*.java') ; do

我正在尝试编写一个脚本(最好是在bash中)来扁平化javaprojet目录结构,并在文件路径的前面加上前缀。例如:

| src
  | org
    | apache
      | file2.java
    | file1.java
将导致:

| src
  | org|apache|file2.java
  | org|file1.java
脚本应该是递归的,因为目录可能有许多子文件夹

cd src
for i in $(find . - name '*.java') ; do 
  echo cp \"$i\" $(echo "$i" | tr / _)
done

如果它看起来不错(如果文件名包含空格,可能会呕吐),将结果传递到
sh

java文件名是否可能包含空格?顺便问一下,当我从$i变量中删除第一个echo和引号并运行脚本时,它没有做任何事情。
find…|当读取-r i
而不是
时。。。如果文件名有空格,“查找”
将起作用。我将如何适应您的解决方案?