Linux:重命名文件/目录在它的当前位置W / O改变密码到该位置?

在命令行中,可以说我的pwd是这样的:

 /home/whatever 

还有一个我想重命名的深层目录中的文件。 通常我会这样做:

 # mv /var/some/deep/folder/structure/fileA /var/some/deep/folder/structure/fileB 

问题是,有没有命令行技巧来重命名文件/目录,而不必再input整个目录结构? 就像是:

 # mv /var/some/deep/folder/structure/fileA fileB 

该命令的问题是,它将fileA移动到您的pwd 。 显然,我想保持在同一个位置,只需重命名它。 所以,正如我所说,有没有什么技巧,而不必再次input整个目录结构呢? 这只是出于好奇和懒惰的一个问题。

取决于你的shell。 在zsh中你可以:

 mv /var/some/deep/folder/structure/{fileA,fileB} 

如果你使用bash,考虑迁移到zsh – 这是一个非常简单的过程,我相信你会喜欢zsh。 🙂

编辑

它似乎工作在bash,看Lunar_Lamp的评论。

至less有三个技巧来消除重复键入。

…他们都在Bourne-Againshell,Kornshell和Zshell中工作。

  • 使用shellvariables:
      DIR =的/ var /一些/深/文件夹/结构
     mv“$ {dir}”/ fileA mv“$ {dir}”/ fileB 
  • 使用大括号扩展:
      mv / var / some / deep / folder / structure / {fileA,fileB} 
  • 使用一个子shell:
      (cd / var / some / deep / folder / structure / && mv fileA fileB) 

其他的打字减less技巧包括更多的特定于shell的技巧,例如函数和别名,以及shell-neutral技巧,例如使用terminal仿真器的复制和粘贴function 。 ☺

虽然可能有更高效的快捷方式,但这些将是我经常使用的两种方法:

 aa=/var/some/deep/folder/structure/ mv "$aa"fileA "$aa"fileB 

要么

 cd /var/some/deep/folder/structure mv fileA fileB cd - 

现在,显然他们不是你所追求的有效的解决scheme,但是他们都可以(比我的意见)更快,而不是每次都input完整的path。