通常、私は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、およびその派生バージョンから呼び出されます)は、ファイル名の一部(ディレクトリ部分に配置できます)を変更するために使用されます。 inrename 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