【问题标题】:Change directory to similar numbered folder. (shell scripting)将目录更改为类似编号的文件夹。 (外壳脚本)
【发布时间】:2017-09-17 16:39:07
【问题描述】:

我需要一个解决方案,说明如何更改为与其他目录具有相似命名约定的最新目录。例如:

文件夹名称如下...
parent_directory ---> 文件夹100.000.200
----------------------------文件夹100.000.201
----------------------------------------文件夹100.000.202
----------------------------------------文件夹100.000.203

使用 linux shell,我尝试导航到 parent_directory,然后导航到最新的文件夹 (folder100.000.203),而不必每天更改脚本(定期添加文件夹)。

旧的解决方案是:

FOLDER=folder100.000.$1
cd parent_folder/${FOLDER}

但这不再有效。我知道 $1 是一个位置参数,但不明白为什么它以前有效而不是现在有效。对此的任何帮助将不胜感激。

编辑: 所以我发现旧脚本正在将一个值传递给脚本,这就是 $1 的来源。当我运行脚本时,我忘记了我必须传递版本号,但有没有办法让我指定这个?

./script.sh 203

这是当前可行的解决方案,但我仍想自动查找号码并将其传入。

【问题讨论】:

标签: shell


【解决方案1】:

如果您想要的文件夹是最近创建的(无论其名称如何),那么您可以使用ls -c 按 ctime 降序排序。所以,也许是这样的:

cd $(ls -c | head -1)

【讨论】:

  • 这可能会起作用,但它也必须是其他东西的组合。该目录包含一堆不同的文件和文件夹,每个都命名不同的东西并在不同的时间更新。想想每天有多个更新的多个产品和版本。
【解决方案2】:

我想我已经找到了解决方案,但我希望更多人关注它来验证。

cd $(ls -dr */ | grep 'folder100.000' | head -1

此解决方案返回名称中包含 'folder100.000' (grep 'folder100.000') 的目录 (-d */) 并以相反的顺序 (-r) 对其进行排序,这将返回最高的内部版本号 (头-1)。所以这段代码返回:

folder100.000.203

由于唯一改变的是最后 3 个数字,这是一个合适的解决方案还是我应该找到另一种查找最新版本文件夹的方法?

旁注:这些命令将在 ftp 中运行

【讨论】:

  • 所以这在 linux shell 中有效,但无法在 ftp 中找到文件。有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多