gpt4 book ai didi

regex - 根据某些条件列出 Bash 中的所有子目录

转载 作者:太空宇宙 更新时间:2023-11-04 10:44:49 25 4
gpt4 key购买 nike

我正在编写一个脚本,用于导航所有名为 1298 等的子目录,并检查每个子目录是否包含一个 runs子目录。脚本中的后续操作需要检查。我怎样才能做到这一点?我设法写了这个:

# check that I am in a multi-grid directory, with "runs" subdirectories
for grid in ??; do
cd $grid
cd ..
done

但是,?? 也匹配 LS 之类的内容,这是不正确的。关于如何解决它的任何想法?

下一步:在每个名为dd(数字/数字)的目录中,我需要检查是否有一个名为runs的子目录,否则会报错退出。关于如何做到这一点的任何想法?我想过使用 find -type d -name "runs",但它在子目录中递归查找,这是错误的,无论如何如果 find 没有找到匹配项,我不知道如何在脚本中捕获它。

最佳答案

遍历目录,报告丢失的子目录:

for dir in [0-9][0-9]/ ; do
[[ -d $dir/runs ]] || { echo $dir ; exit 1 ; }
done

您可以在 glob 模式中使用字符类。模式后的 /(不是 \)使其只匹配目录,即名为 42 的文件将被跳过。

下一行写着“$dir/runs is a directory, or report it”。 [[ ... ]]引入条件,详见man bash-d 测试目录是否存在。 || 是“或”,您可以将该行改写为

if [[ ! -d $dir/runs ]] ; then
echo $dir
exit 1
fi

! 代表“不”。

关于regex - 根据某些条件列出 Bash 中的所有子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33517817/

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