怎么才能找到目录

how can find directory

启动 tcl 脚本时,会通过 bash 命令创建一个目录。在脚本的末尾,我想读取最新目录的目录名称。但是我的脚本没有找到最新的目录,只有第二个最新的

bind pub "-|-" !aa pub:aaa
proc pub:aaa {nick host handle channel arg} {

set home "/home/user"

set bb [exec bash -c "start.sh"]

after 3000
set latest [exec bash -c "ls -td $home/jpg/*/ | head -n1"]
putnow "PRIVMSG $channel :$latest"
}

在启动之前它的目录中有以下文件夹:

drwxr-xr-x 2 user user 4096 Jun 24 18:30  aaa
drwxr-xr-x 2 user user 4096 Jun 24 18:14  bbb

启动后目录中有以下文件夹

drwxr-xr-x 2 user user 4096 Jun 24 18:30  aaa
drwxr-xr-x 2 user user 4096 Jun 24 18:14  bbb
drwxr-xr-x 2 user user 4096 Jun 24 18:35  ccc

输出为:

 <@testbot> aaa

应该是这样

<@testbot> ccc

他找到创建的目录,其间tcl脚本没有运行

如何显示最新的、新建的目录?

问候

我不会尝试执行 shell 来查找最近修改的目录,而是在纯 tcl 中执行此操作:

proc latest_directory {path {time mtime}} {
    set dirs {}
    foreach dir [glob -nocomplain -type d $path/*] {
        file stat $dir s
        lappend dirs $s($time) $dir
    }
    if {[llength $dirs] == 0} {
        error "No directories found in $path"
    } else {
        return [lindex [lsort -integer -decreasing -stride 2 $dirs] 1]
    }
}


# Then in pub:aaa
set latest [latest_directory $home/jpg]

至于为什么你没有得到 ccc...如果没有看到你的 start.sh 脚本很难确定,但如果它最终在后台出现 运行 东西退出后继续,创建该目录可能需要 3 秒以上?