如何在 ubuntu 中将 LS 的结果传输到 CD

如何在 ubuntu 中将 LS 的结果传输到 CD

我想在给定目录中 ls 查找最新创建的目录(我们为每个版本创建一个新文件夹),然后 cd 到该目录。我想为此创建一个别名,这样我就不必每次需要时都记住如何进入最新目录。

这是我尝试过的:

ls -ltr ~/workspace/docs/new-docs/Mapper/Documentation/ | tail -1 | cd
cd $(ls -ltr ~/workspace/docs/new-docs/Mapper/Documentation/ | tail -1)

问题似乎是,如果我对结果进行排序,最终会得到文件上的权限作为输出。任何帮助都非常感谢!

更新:

$cd `ls -dt ~/workspace/docs/new-docs/Mapper/Documentation/* | head -1`
-bash: cd: drwxr-xr-x: No such file or directory

答案1

嗯,您确实指定了-l选项ls,这会导致输出过长。尝试删除它。

ls -tr ~/workspace/docs/new-docs/Mapper/Documentation/

您还需要确保将路径添加到所需的目录名称前面。通过添加*到路径并指定-d选项来执行此操作ls

ls -dtr ~/workspace/docs/new-docs/Mapper/Documentation/*

为了提高性能,您还应该通过管道进行排序head而不是反向排序。

ls -dt ~/workspace/docs/new-docs/Mapper/Documentation/* | head -1

最终命令是:

cd `ls -dt ~/workspace/docs/new-docs/Mapper/Documentation/* | head -1`

答案2

有几件事要提一下:

  • ls -dt [PATH]/*还将列出文件;如果目录中存在文件,则可能会出现问题。
  • 如果目录名称包含空格,您可能需要使用引号。

因此,还有几个快速选项供您选择:

    cd "`ls -dt ~/workspace/docs/new-docs/Mapper/Documentation/*/ | head -1`"

或者,如果您的命令支持ls

    cd "`ls -t --group-directories-first ~/workspace/docs/new-docs/Mapper/Documentation | head -1`"

相关内容