通常,我會在 Rails 目錄的根目錄中工作,每次我想移動檔案時,我都會在同一路徑中導航兩次:
mv app/views/layouts/application.html.erb app/views/layouts/application.html.haml
haml 只是我需要更改檔案名稱而不修改其目前所在目錄且不更改目錄的可能範例之一。有辦法實現這一點嗎?
答案1
使用大括號擴展:
mv very/long/path/to/filename.{old,new}
將擴展到
mv very/long/path/to/filename.old very/long/path/to/filename.new
答案2
如果您要在目錄中工作,可以暫時切換到該目錄。
pushd app/views/layouts
mv application.html.erb application.html.haml
popd
在Linux下,您可以使用rename
實用程式(rename.ul
在 Debian、Ubuntu 及其衍生產品下呼叫)用於更改檔案名稱的一部分(可以位於目錄部分)。rename foo bar path/to/file
將第一次出現的foo
inpath/to/file
改為bar
。如果檔案名稱不包含第一個字串,則該檔案將保留在原處。
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
當命令列中有多個連續的單字共享共同的詞幹時,可以使用大括號擴展:
mv app/views/layouts/application.html.{erb,haml}
答案3
您可以cd
在子 shell 中的目錄中:
(cd app/views/layouts && mv application.html.erb application.html.haml)
這裡,括號在新的 shell 程序中執行指令bash
。
答案4
您可以定義函數:
mv-rename () {
mv -- "${1}" "$(dirname -- "${1}")/${2}"
}
用法:
mv-rename app/views/layouts/application.html.erb application.html.haml