【问题标题】:Path to all subdirectories that do not contain any files不包含任何文件的所有子目录的路径
【发布时间】:2021-04-13 15:43:11
【问题描述】:

我知道我的问题对你们中的许多人来说听起来很愚蠢,但是有人可以帮助我解决大学话题吗? 语句如下: 制作一个接收目录 D 作为参数的 shell 脚本。该脚本将递归地遍历目录 D,并将查找并显示所有不包含任何文件的子目录的路径(它们为空或仅包含子目录)。 请不要使用“查找”,谢谢大家。

【问题讨论】:

  • 你了解递归函数了吗?祝你好运。
  • 我们只做了while和for,但没有做递归浏览目录的方法,尤其是如何打开目录中的文件夹
  • 您学习过如何测试目录条目是文件还是目录?如果if [ -f "$item" ] ; then echo "$item is a file" ; elif [ -d $item ] ; then echo "$item is a dir" ; fi?您需要在此处发布一些代码。我们将帮助您解决解决问题的最佳尝试,但我们不会为您编写它。祝你好运。
  • 他们只教我们如何处理文件中的数据,对不起我没有上传代码,但我真的不知道如何开始这个问题。
  • 那么你的导师给了你一个他们没有给你任何准备的作业。你应该和他们讨论这个。或使用[bash] for loop directory 在此处搜索并找出一些要发布的代码。让它在一个目录中工作,然后更新你的 Q。祝你好运。

标签: shell directory path


【解决方案1】:

脚本可以用递归函数实现:

#!/usr/bin/env bash

if [ $# -eq 0 ] ; then
    echo "Usage: ./recursive.sh {path}" >&2
    exit 0
fi

D="$1"

print_recursively() {
    for f in "$1"/*; do
        echo "$f"
        if [[ -d "$f" ]] ; then
            print_recursively "$f"
        fi
    done
}

print_recursively "$D"

该解决方案可能缺少一些细节(如符号链接、不寻常的文件类型等),但它提供了如何实现递归遍历的想法。

【讨论】:

    【解决方案2】:

    您可能正在寻找比这更复杂的东西......

    find "$D" -type d -empty

    【讨论】:

    • 看问题的最后一句话。
    猜你喜欢
    • 2017-04-04
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 2011-08-05
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多