Bash脚本遍历子目录并写入文件

用户3991417

我不知道我已经花了很多时间来解决这个问题。我需要写剧本。脚本应在当前目录的子目录中递归循环。它应该检查每个目录中的文件计数。如果文件数大于10,则应在“ BigList”文件中写入这些文件的所有名称,否则应在“ ShortList”文件中写入。看起来应该像

---<directory name>
<filename>
<filename>
<filename>
<filename>
....
---<directory name>
<filename>
<filename>
<filename>
<filename>
....

仅当子目录未依次包含子目录时,我的脚本才起作用。我对此感到困惑。因为它不符合我的预期。对于我来说,用任何一种编程语言编写它都将花费不到5分钟的时间。请帮助解决此问题,因为我不知道如何执行此操作。这是我的剧本

#!/bin/bash
parent_dir=""
if [ -d "$1" ]; then
    path=$1;
else
    path=$(pwd)
fi
parent_dir=$path
loop_folder_recurse() { 
    local files_list=""      
    local cnt=0
    for i in "$1"/*;do
        if [ -d "$i" ];then
            echo "dir: $i"
            parent_dir=$i               
            echo before recursion
            loop_folder_recurse "$i"
            echo after recursion
            if [ $cnt -ge 10 ]; then
                echo -e "---"$parent_dir >> BigList
                echo -e $file_list >> BigList
            else
                echo -e "---"$parent_dir >> ShortList
                echo -e $file_list >> ShortList
            fi
        elif [ -f "$i" ]; then
            echo file $i
            if [ $cur_fol != $main_pwd ]; then
                file_list+=$i'\n'
                cnt=$((cnt + 1))
            fi
        fi
    done
}
echo "Base path: $path"
loop_folder_recurse $path
约翰1024

我相信这可以满足您的需求:

find . -type d -exec env d={} bash -c 'out=Shortlist; [ $(ls "$d" | wc -l) -ge 10 ] && out=Biglist; { echo "--$d"; ls "$d"; echo; } >>"$out"' ';'

如果我们既不希望计算截止的子目录,也不希望在输出中列出子目录,请使用以下版本:

find . -type d -exec env d={} bash -c 'out=Shortlist; [ $(ls -p "$d" | grep -v "/$" | wc -l) -ge 10 ] && out=Biglist; { echo "--$d"; ls -p "$d"; echo; } | grep -v "/$" >>"$out"' ';'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SharpSVN不会遍历所有子目录和文件

来自分类Dev

Bash脚本遍历子目录并写入文件

来自分类Dev

Bash脚本,用于写入具有5个以上文件的子目录

来自分类Dev

bash列出文件夹中的所有子目录,将它们写入数组以在菜单中使用

来自分类Dev

遍历目录中的子目录

来自分类Dev

遍历子目录,cd进入子目录,然后处理文件

来自分类Dev

自动制作:遍历子目录之前运行脚本

来自分类Dev

遍历子目录并对某些文件执行awk脚本

来自分类Dev

遍历子目录以采样文件

来自分类Dev

Bash脚本创建多个目录和子目录

来自分类Dev

Bash:遍历目录和子目录(包括隐藏文件)的正确方法是什么?

来自分类Dev

Bash脚本删除带有子目录的x天之前的文件

来自分类Dev

遍历文件('for file in ...),还包括子目录?

来自分类Dev

Bash脚本创建多个目录和子目录

来自分类Dev

循环遍历子目录中的json文件

来自分类Dev

Bash脚本,要求用户输入,以递归方式更改目录,子目录和文件的mtime atime linux

来自分类Dev

遍历子目录并对某些文件执行awk脚本

来自分类Dev

遍历目录并压缩某些子目录

来自分类Dev

Bash脚本从子目录中移动最新的特定文件类型

来自分类Dev

如何遍历目录中的子目录并计算python中子目录中的文件

来自分类Dev

Bash脚本运行当前目录或其子目录中包含的几个指定范围的随机文件

来自分类Dev

如何遍历所有子目录中的文件?

来自分类Dev

循环遍历子目录并在每个子目录中执行一个Perl脚本

来自分类Dev

Bash脚本删除最旧的文件,但保留最新的文件,包括子目录

来自分类Dev

Bash-如何遍历子目录并执行此命令

来自分类Dev

Bash:遍历所有子目录并在某些文件上执行命令

来自分类Dev

用于监视目录和符号链接所有新创建的子目录及其文件的 Bash 脚本

来自分类Dev

通过目录和子目录中的文件的脚本

来自分类Dev

使用 shell 脚本在子目录中运行 make 文件

Related 相关文章

  1. 1

    SharpSVN不会遍历所有子目录和文件

  2. 2

    Bash脚本遍历子目录并写入文件

  3. 3

    Bash脚本,用于写入具有5个以上文件的子目录

  4. 4

    bash列出文件夹中的所有子目录,将它们写入数组以在菜单中使用

  5. 5

    遍历目录中的子目录

  6. 6

    遍历子目录,cd进入子目录,然后处理文件

  7. 7

    自动制作:遍历子目录之前运行脚本

  8. 8

    遍历子目录并对某些文件执行awk脚本

  9. 9

    遍历子目录以采样文件

  10. 10

    Bash脚本创建多个目录和子目录

  11. 11

    Bash:遍历目录和子目录(包括隐藏文件)的正确方法是什么?

  12. 12

    Bash脚本删除带有子目录的x天之前的文件

  13. 13

    遍历文件('for file in ...),还包括子目录?

  14. 14

    Bash脚本创建多个目录和子目录

  15. 15

    循环遍历子目录中的json文件

  16. 16

    Bash脚本,要求用户输入,以递归方式更改目录,子目录和文件的mtime atime linux

  17. 17

    遍历子目录并对某些文件执行awk脚本

  18. 18

    遍历目录并压缩某些子目录

  19. 19

    Bash脚本从子目录中移动最新的特定文件类型

  20. 20

    如何遍历目录中的子目录并计算python中子目录中的文件

  21. 21

    Bash脚本运行当前目录或其子目录中包含的几个指定范围的随机文件

  22. 22

    如何遍历所有子目录中的文件?

  23. 23

    循环遍历子目录并在每个子目录中执行一个Perl脚本

  24. 24

    Bash脚本删除最旧的文件,但保留最新的文件,包括子目录

  25. 25

    Bash-如何遍历子目录并执行此命令

  26. 26

    Bash:遍历所有子目录并在某些文件上执行命令

  27. 27

    用于监视目录和符号链接所有新创建的子目录及其文件的 Bash 脚本

  28. 28

    通过目录和子目录中的文件的脚本

  29. 29

    使用 shell 脚本在子目录中运行 make 文件

热门标签

归档