mvを呼び出すときにディレクトリパスを含める簡単な方法は何ですか? [コピー]

mvを呼び出すときにディレクトリパスを含める簡単な方法は何ですか? [コピー]

通常、私は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.ulDebian、Ubuntu、およびその派生バージョンから呼び出されます)は、ファイル名の一部(ディレクトリ部分に配置できます)を変更するために使用されます。 inrename foo bar path/to/fileの最初の項目をに変更します。ファイル名に最初の文字列が含まれていない場合、ファイルはそのまま残ります。foopath/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

共通語幹を共有するコマンドラインに複数の連続語がある場合は、中かっこ拡張を使用できます。

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

関連情報