web-dev-qa-db-ja.com

シェルコマンドを使用してフォルダー内のファイルの名前を変更する方法

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です)。

8
Leonid Shevtsov

これを単一のコマンドで行うには、次のようにします。

mv some/long/path/to/file/{myfiel.txt,myfile.txt}

完全なファイル名の例です。入力ミスがあるとすると、次のようになります。

mv some/long/path/to/file/myfi{el,le}.txt

両方とも完全なコマンドに展開されます。これらは ブレース展開 と呼ばれます。それらは zshでサポートされています です。

11
Tamara Wijsman

ここにいくつかのオプションがあります:

ディレクトリに移動します。

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"
5
tylerl

ディレクトリに移動し、ファイルを移動して、前のディレクトリに戻ります。そのようです:

cd some/long/path/to/file
mv myfiel.txt myfile.txt
cd -
3
Yedric

サブシェルメソッドを使用すると、1行でそうする傾向があります。

(cd /some/long/path ; mv myfiel myfile )
1
Keith Wolters