Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Bash脚本来标识子目录中的文件扩展名,并相应地对父控制器进行分组_Python_Node.js_Bash - Fatal编程技术网

Python Bash脚本来标识子目录中的文件扩展名,并相应地对父控制器进行分组

Python Bash脚本来标识子目录中的文件扩展名,并相应地对父控制器进行分组,python,node.js,bash,Python,Node.js,Bash,我有100个从Github克隆的文件夹。每个文件夹都有Java、JavaScript、C#或Python代码。我正在尝试编写一个脚本,查看每个文件夹,并根据以下编程语言将它们移动到不同的文件夹中: 实际值: 父文件夹1 子文件夹 子文件夹 子文件夹 。。 MyFile.java 父文件夹2 子文件夹 子文件夹 子文件夹 。。 MyFile2.java 父文件夹3 子文件夹 子文件夹 。。 MyFile.js 父文件夹4 子文件夹 子文件夹 。。 MyF

我有100个从Github克隆的文件夹。每个文件夹都有Java、JavaScript、C#或Python代码。我正在尝试编写一个脚本,查看每个文件夹,并根据以下编程语言将它们移动到不同的文件夹中:

实际值:

  • 父文件夹1

    • 子文件夹
      • 子文件夹
        • 子文件夹
        • 。。 MyFile.java
  • 父文件夹2

    • 子文件夹
      • 子文件夹
        • 子文件夹
        • 。。 MyFile2.java
  • 父文件夹3

    • 子文件夹
      • 子文件夹
        • 。。 MyFile.js
  • 父文件夹4

    • 子文件夹
      • 子文件夹
        • 。。 MyFile.cs
正如您在上面所看到的,在子文件夹的某个地方,您有一些具有适当扩展名的文件,如.java、.js、.cs或.py,我们可以使用这些文件来了解这个Git repo是用什么样的编程语言编写的

期望值:

  • 爪哇

    • 父文件夹1

      • 子文件夹
      • 子文件夹
        • 。。 MyFile.java
    • 父文件夹2

      • 子文件夹
      • 子文件夹
        • 。。 MyFile.java
  • JS

    • 父文件夹3
      • 子文件夹
      • 子文件夹
        • 。。 MyFile.js
  • 蟒蛇

    • 父文件夹3
      • 子文件夹
      • 子文件夹
        • 。。 MyFile.py

正如您现在看到的,回购协议根据编程语言分组到父文件夹中。

请尝试以下操作:

declare -A ext2dir=(["java"]="Java" ["js"]="JS" ["py"]="Python" ["cs"]="CS")
# add pairs of extension and group name according to your files

while IFS= read -r -d "" f; do
    ext="${f##*.}"              # extracts extension such as "java"
    parent="${f#./}"            # remove leading "./"
    parent="${parent%%/*}"      # extracts parent dirname such as "ParentFolder1"
    [[ -n ${ext2dir[$ext]} ]] && declare -A group[$parent]="${ext2dir[$ext]}"
    # create a map to associate parent dirname (e.g "ParentFolder1") with group name (e.g. "Java")
done < <(find . -type f -name "*.*" -print0)

for parent in "${!group[@]}"; do
    mkdir -p "${group[$parent]}"
    mv -- "$parent" "${group[$parent]}"
done
declare-A ext2dir=([“java”]=“java”[“js”]=“js”[“py”]=“Python”[“cs”]=“cs”)
#根据文件添加扩展名和组名对
而IFS=read-r-d“f;做
ext=“${f##*.}”提取扩展名,如“java”
parent=“${f#./}”删除前导“/”
parent=“${parent%%/*}”提取父目录名,如“ParentFolder1”
[[-n${ext2dir[$ext]}]]&声明-A组[$parent]=“${ext2dir[$ext]}”
#创建一个映射以将父目录名(例如“ParentFolder1”)与组名(例如“Java”)关联

done<你尝试过什么吗?是的,我尝试过使用Node.js脚本,但是它比我最初认为的复杂得多,而且没有真正起作用。谢谢,我会尝试的