调用 mv 时包含目录路径的快速方法?

rud*_*ph9 35 bash rename

通常,我会在 rails 目录的根目录下工作,每次我想移动文件时,我都会发现自己在同一路径中导航两次:

mv app/views/layouts/application.html.erb app/views/layouts/application.html.haml
Run Code Online (Sandbox Code Playgroud)

haml 只是我需要更改文件名而不修改它当前所在的目录且不更改目录的可能示例之一。有没有办法实现这一目标?

jw0*_*013 57

使用大括号扩展

mv very/long/path/to/filename.{old,new}
Run Code Online (Sandbox Code Playgroud)

将扩展到

mv very/long/path/to/filename.old very/long/path/to/filename.new
Run Code Online (Sandbox Code Playgroud)

  • 非常有用 - 对我来说 - 使用大括号扩展的最常见情况。多亏了这一点,我几乎从不使用“重命名”。 (2认同)

Gil*_*il' 8

如果你要在一个目录中工作,你可以暂时切换到它。

pushd app/views/layouts
mv application.html.erb application.html.haml
popd
Run Code Online (Sandbox Code Playgroud)

在 Linux 下,您可以使用该rename实用程序(rename.ul在 Debian、Ubuntu 和衍生产品下称为)更改文件名的一部分(可以在目录部分)。rename foo bar path/to/filefooin的第一次出现更改path/to/filebar。如果文件名不包含第一个字符串,则文件保留在原处。

rename .erb .haml app/views/layouts/application.html.erb
rename .erb .haml app/views/layouts/*.html.erb       # do several in one go
rename .erb .haml app/views/layouts/application.*    # never mind if application.js and application.html.gz also exist
Run Code Online (Sandbox Code Playgroud)

当一个命令行中有几个连续的单词共享一个公共词干时,您可以使用大括号扩展:

mv app/views/layouts/application.html.{erb,haml}
Run Code Online (Sandbox Code Playgroud)