パスを繰り返さずに別のディレクトリのファイル名を変更する [重複]

パスを繰り返さずに別のディレクトリのファイル名を変更する [重複]

現在、作業ディレクトリの下に入れ子になっている複数のディレクトリのファイルを少し変更する必要があることがよくあります。ファイルが 1 つだけでワイルドカード/スクリプトが過剰であるため、手動で変更します。

blaz.txtたとえば、./foo/bar/bleeのファイル名を次のように変更する必要がありますfoobar.txt

. 
|--foo
  |--bar
     | blee
       |-- blaz.txt

通常、cd「単一ファイルの検索bleeと実行」でmv blaz.txt foobar.txtこれを行います。フルパスを入力できることはわかっていますが(作業を高速化するための便利なタブ補完機能を使用しています)、より速いパスを好みます。

もっと良い方法がありますか?

答え1

中かっこを使った拡張:

mv foo/bar/blee/{blaz,foobar}.txt

答え2

> touch tmp/foo/bar/baz
> rename baz boo tmp/foo/bar/baz
> ls -l tmp/foo/bar/
total 0
-rw-r--r-- 1 hl hauke 0 May 29 23:08 boo

答え3

サブシェルを使用できます。

( cd foo/bar/blee ; mv blaz.txt boo.txt )

ただし、中括弧の例では+1が必要です。これは素晴らしいです。

答え4

あまりにも汚れていない場合は、シンボリックリンクを作成してコマンドを独自に渡すことができるはずです。

シンボリックリンク生成のガイドライン:http://www.cyberciti.biz/faq/creating-soft-link-or-symbolic-link/

以下のコメントから更新:試してみる価値がありますln -s /directory/thats/super/long/and/a/pita/ /etc/goats/mv /etc/goats/foo.txt /etc/goats/bar.txt

関連情報