将Bash脚本cd到目录中的最新目录中

奇迹警告

我正在尝试向正在编写的数据收集bash脚本中添加功能。目的是指向一个特定的目录,然后在父目录中cd到NEWEST目录。

伪代码:

cd top_dir
    for each dir in top_dir:
      age = dir.age
      if age < least_age:
        least_age = age
        newest_dir = dir

    cd newest_dir

我已经尝试使用cd "$( find "$1"/* -prune -type d 2>/dev/null | xargs stat -c "%Y %n" 2>/dev/null | sort -nr | head -n 1 | cut -d " " -f 2-)"这篇文章,但不是CD就是我进入我的电脑上最新的目录。

目的是建立如下所示的目录结构:

parent_dir:
  child_1 | Last Edited 1 Hr Ago
  child_2 | Last Edited 1 Yr Ago
  child_3 | Last Edited 2 Yr Ago
  child_4 | Last Edited 1 Min Ago
  child_5 | Last Edited 1 Week Ago

命令会带cd我进入child_4

切普纳

您尝试使用的代码旨在成为函数的主体;$1正确调用函数集就其本身而言,$1可能未设置,所以findon上的运算符""/(与/相同,而不是top_dir

new_cd () {
  cd "$( find "$1"/* -prune -type d 2>/dev/null | xargs stat -c "%Y %n" 2>/dev/null | sort -nr | head -n 1 | cut -d " " -f 2-)"
}

new_cd top_dir

这可以简化一点。无需使用findxargs; 一个简单的循环就可以了。而且,由于您现在有了功能,因此无需将所有内容都塞进一行。

new_cd () {
  new_d=$(for d in "$1"/*/; do
      stat -c "%Y %n" "$d" 2> /dev/null
  done | sort -nr |
         head -n |
         cut -d " " -f 2-)
  cd "$new_d"
}

这有一个小缺点:命令替换将占用的输出中的所有尾随换行符cut,因此请确保您的目录名称均不以换行符结尾。(可以修复此极其微小的错误,但是这样做可能不值得;请务必注意。)

它还有一个更大的缺点:由于不会吃掉尾随的换行符,因此您不能假设循环的输出每行只包含一个文件;一个文件可以占用多行。最简单的解决方法是避免使用换行符的目录名称。一个更强大的修复程序放弃了管道。

new_cd () {
  local newest_time newest_d
  for d in "$1"/*/; do
    t=$(stat -c "%Y" "$d")
    if (( t > newest_time )); then
      newest_time=$t
      newest_d=$d
    fi
  done
  cd "$newest_d"
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

bash 脚本列出路径中的所有目录,将字符和 CD 转义到每个目录中以执行操作

无法将目录或“ cd”删除到存在的目录中

bash脚本创建并cd到名称中带有空格的目录

Bash脚本打开终端并cd到可变目录

别名CD到当前目录中包含名称的目录

bash中的cd <nonexistent_directory>会导致cd到其他目录吗?

bash脚本将文件从深层目录结构中移出

将目录传递到cd

在一个命令中,将CD切换到ls -lt之后的最新修改目录

删除除bash中的某些文件以外的所有文件,而没有cd到目录中?

如何使用bash中的install将目录复制到目录中?

shell脚本:将文件分类到目录和子目录中

在Bash脚本中,如何使用`dirname`函数将目录更改为文件的目录路径?

Bash:将文件复制到最新目录

通过SSH Bash脚本将文件复制到具有附加文件名的同一目录中

如何在bash脚本中的目录名称中找到最新的时间戳?

在bash脚本中拆分工作目录

防止bash脚本中的目录遍历漏洞

在bash脚本中压缩几个目录的内容

使用bash脚本遍历目录中的文件

Bash Shell脚本处理主目录中的每个目录

在终端中是否有任何命令可以同时将CD和CD复制到该目录中

脚本将最新添加的图像下载到Dropbox目录中

仅在将CD cd到脚本目录时运行sh文件

linux bash:cd到带空格的目录

查找文件,然后CD到Linux中的该目录

cd到已知路径中的未知名称目录

使用python将目录内容复制到目录中

tar目录,以将文件归档到要压缩的目录中