在 Bash shell 中更改包含大文件名的目录

在 Bash shell 中更改包含大文件名的目录

我必须浏览一系列包含软件安装程序的目录。我编写了一个小型 bash 函数,可以让我转到包含所有版本的主文件夹,但子目录的文件名太长了。

主文件夹名为“release”,包含名称为“Build 10 - 0.0.3580 - ecb871131857710a”的目录。我读过 William Shotts' Jr 的书“Linux 命令行:完整介绍”,这本书非常好,内容详尽,但它并没有真正让我深入了解如何解决这个问题,我的同事似乎也不知道更简单的方法。

有人能给我一些建议或一般方法来帮助我解决这个问题吗?我不是在寻找脚本或有人能给我完整的答案,但如果能在正确的方向上有所推动,我将不胜感激。

答案1

去年,在学校里,我向一个男孩介绍了 bash 补全的优秀之处,当时他正不情愿地探索 Mercurial 命令行版本相对于 TortoiseHG 的优势,在我的坚持下,他因此受到了启发。对话如下:

我:输入 cd ~

他:是吗?

我:现在标签

他和?

我:再次使用斜线和制表符。

他:哦,该死!

我:输入。很巧妙,对吧?现在输入你保存文件的文件夹的前三个字母。

他:好嗎?

我:标签

他:哇哦!这真的很有用!

我:命令行的力量......

他:cd Sch[tab][回车] cd Proj[tab][回车] cd s[tab][tab][tab]

他:没用

我:区分大小写。小写字母和大写字母不一样。输入 Sourc[tab]

他:哦。[tab][输入][tab][输入]

我:不,别再这样了,你可以完成整个路径,而不仅仅是单个文件夹。

他:哦天啊!这太酷了!

我:接下来我将向您展示如何使用定位来查找文件。

我可能改变了他的一生,颠覆了他的世界观!

答案2

Linux 通常有以下限制:

  #define NAME_MAX         255    /* # chars in a file name */
  #define PATH_MAX        4096    /* # chars in a path name including nul */

如果您的“长得可笑”的路径名比这短,那么您就不会有问题。

我注意到您的名称包含空格,因此请确保始终引用您的变量。

相关内容