gpt4 book ai didi

linux - 写入包含 5 个以上文件的子目录的 Bash 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:24 24 4
gpt4 key购买 nike

虽然我正在尝试练习我的 linux 技能,但我无法解决这个问题。

So its basically saying "Write a bash script that takes a name of directory as a command argument and printf the name of subdirectories that has more than 5 files in it."

我以为我们会使用 find 命令,但我还是想不通。我的代码是:

find directory -type d -mindepth5 

但它不起作用。

最佳答案

您可以使用 find 两次:

首先,您可以使用findwc 来计算给定目录中文件 的数量:

nb=$(find directory -maxdepth 1 -type f -printf "x\n" | wc -l)

这只是要求 find 为目录 directory 中的每个 file 在一行上输出一个 x,非递归地进行,然后 wc -l 计算行数,所以,实际上,nbdirectory 中的文件数。

如果您想知道一个目录是否包含超过 5 个文件,最好在找到 6 个文件后立即停止 find:

nb=$(find directory -maxdepth 1 -type f -printf "x\n" | head -6 | wc -l)

此处 nb 的阈值上限为 6

现在,如果您要为目录 directory 的每个子目录输出文件数(阈值为 6),您可以这样做:

find directory -type d -exec bash -c 'nb=$(find "$0" -maxdepth 1 -type f -printf "x\n" | head -6 | wc -l); echo "$nb"' {} \;

出现的 $0 是第 0 个参数,即 find 将替换的 {}通过 directory 的子目录。

最后,如果文件数超过5个,你只想显示子目录名:

find . -type d -exec bash -c 'nb=$(find "$0" -maxdepth 1 -type f -printf "x\n" | head -6 | wc -l); ((nb>5))' {} \; -print

最终测试 ((nb>5)) 返回成功或失败是否 nb 是否大于 5,如果成功, find -print 子目录名称。

关于linux - 写入包含 5 个以上文件的子目录的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27753517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com