我想在给定目录中 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`"