Bagaimana cara mengganti nama file di dalam folder menggunakan perintah shell?

8

Saya punya file di some/long/path/to/file/myfiel.txt.

Saya ingin mengubah nama menjadi some/long/path/to/file/myfile.txt.

Saat ini saya melakukannya mv some/long/path/to/file/myfiel.txt some/long/path/to/file/myfile.txt, tetapi mengetikkan path dua kali tidak terlalu efektif (bahkan dengan penyelesaian tab).

Bagaimana saya bisa melakukan ini lebih cepat? (Saya pikir saya bisa menulis fungsi untuk mengubah segmen nama file saja, tapi itu rencana B).

Leonid Shevtsov
sumber

Jawaban:

11

Untuk melakukan ini dalam satu perintah, Anda bisa melakukan ini:

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

Yang merupakan contoh untuk nama file lengkap, mengingat itu salah ketik Anda dapat melakukan sesuatu seperti:

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

Keduanya akan berkembang ke perintah penuh, ini disebut ekspansi penjepit . Mereka didukung oleh zsh .

Tamara Wijsman
sumber
Ya ampun, ini membuka begitu banyak kemungkinan. Terima kasih!
Leonid Shevtsov
5

Berikut ini beberapa opsi:

Ubah ke direktori:

cd /home/long/path
mv file1 file2
cd -

Ubah direktori menggunakan tumpukan direktori:

pushd /some/long/path
mv file1 file2
popd

Ubah ke direktori menggunakan subkulit:

( 
  cd /some/long/path
  mv file1 file2
)   # no need to change back

Gunakan ekspansi brace:

mv /some/long/path/{file1,file2}

Gunakan variabel:

D=/some/long/path
mv "$D/file1" "$D/file2"
tylerl
sumber
Berhati-hatilah bahwa pendekatan terakhir rusak ketika jalan memiliki ruang, beter mengutipnya.
slhck
Sslhck SEMUA pendekatan rusak jika Anda memiliki spasi.
tylerl
1
Tidak, jika Anda mengetiknya dengan benar, mereka tidak akan melakukannya. Hanya variabel ketika diperluas yang akan terlihat seperti beberapa argumen untuk mv
slhck
Sslhck itu dia.
tylerl
3

Ubah ke direktori, pindahkan file, dan ubah kembali ke direktori sebelumnya; seperti itu:

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

Ketika saya menggunakan metode subshell saya cenderung melakukannya pada satu baris seperti itu

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