some/long/path/to/file/myfiel.txt
にファイルがあります。
名前をsome/long/path/to/file/myfile.txt
に変更します。
現在、私はmv some/long/path/to/file/myfiel.txt some/long/path/to/file/myfile.txt
を使用していますが、パスを2回入力することは(タブ補完を使用しても)それほど効果的ではありません。
これをもっと速くするにはどうすればよいですか? (ファイル名セグメントのみを変更する関数を記述できると思いますが、それはプランBです)。
これを単一のコマンドで行うには、次のようにします。
mv some/long/path/to/file/{myfiel.txt,myfile.txt}
完全なファイル名の例です。入力ミスがあるとすると、次のようになります。
mv some/long/path/to/file/myfi{el,le}.txt
両方とも完全なコマンドに展開されます。これらは ブレース展開 と呼ばれます。それらは zshでサポートされています です。
ここにいくつかのオプションがあります:
ディレクトリに移動します。
cd /home/long/path
mv file1 file2
cd -
ディレクトリスタックを使用してディレクトリを変更します。
pushd /some/long/path
mv file1 file2
popd
サブシェルを使用してディレクトリに移動します。
(
cd /some/long/path
mv file1 file2
) # no need to change back
ブレース拡張を使用します。
mv /some/long/path/{file1,file2}
変数を使用します。
D=/some/long/path
mv "$D/file1" "$D/file2"
ディレクトリに移動し、ファイルを移動して、前のディレクトリに戻ります。そのようです:
cd some/long/path/to/file
mv myfiel.txt myfile.txt
cd -
サブシェルメソッドを使用すると、1行でそうする傾向があります。
(cd /some/long/path ; mv myfiel myfile )