私はよく Rails ディレクトリのルートから作業しますが、ファイルを移動するたびに同じパスを 2 回ナビゲートすることになります。
mv app/views/layouts/application.html.erb app/views/layouts/application.html.haml
haml は、現在存在するディレクトリを変更せずに、またディレクトリを変更せずにファイル名を変更する必要がある多くの例の 1 つにすぎません。これを実現する方法はありますか?
答え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
。ファイル名に最初の文字列が含まれていない場合、ファイルはそのまま残ります。path/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
サブシェルのディレクトリで次のように実行できます。
(cd app/views/layouts && mv application.html.erb application.html.haml)
ここで、括弧は新しいシェル プロセスでコマンドを実行しますbash
。
答え4
関数を定義できます:
mv-rename () {
mv -- "${1}" "$(dirname -- "${1}")/${2}"
}
使用法:
mv-rename app/views/layouts/application.html.erb application.html.haml