排序后如何进入第一个目录

时间:2016-05-05 12:34:48

标签: bash shell unix ls cd

我有一个文件夹,其中有目录

ABC_1
ABC_2
ABC_3
ABC_4
ABC_5
Test
XYZ

我想按日期对它们进行排序,删除名称中不包含ABC的目录,然后cd进入第一个目录。

我试过

cd $(/bin/ls -t1 | head -n 1)

这不起作用。 任何帮助将非常感谢   感谢。

3 个答案:

答案 0 :(得分:2)

这将列出目录并过滤掉任何不以ABC _开头的文件夹:

cd "$(ls -t1 -d */ |grep  "^ABC_" |head -n1)"

<强>更新

您实际上不需要 grep

cd "$(ls -t1 -d ABC_*/ | head -n1)"

答案 1 :(得分:1)

cd "$(/bin/ls -t1 | grep ABC | head -n 1)"

答案 2 :(得分:0)

海报希望列表后面的第一个结果不是根据修改时间的第一个结果所以&#34; -t&#34;不需要选项。

您还必须确保只提取目录而不是文件。

这将做你想要的:

cd $(ls -d [^ABC]*/ | head -n 1)
  • $()运行命令
  • ls -d搜索目录
  • [^ ABC] /不包含任何以ABC
  • 开头的目录
  • head -n 1返回第一个条目
  • cd切换到目录