如何在Linux下将结果从LS传递到CD

我想在最新创build的目录在给定的目录(我们为每个版本创build一个新的文件夹),然后cd到该目录。 我想创build一个别名,所以我不必记得如何到达最新的目录,每当我需要。

以下是我所尝试的:

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 

那么你确实给ls指定了-l选项,导致输出很长。 尝试删除它。

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

您还需要确保path被预置为所需的目录名称。 通过将*添加到path并为ls指定-d选项来执行此操作。

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

为了提高性能,你也应该努力学习,不要颠倒过来。

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

最后的命令是:

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

有几件事要提到:

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

所以,给你更快的select:

  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`"