Mengganti nama beberapa file dengan menambahkan string ke awal

21

Untuk sekitar 200 file dalam direktori saya ingin menambahkan String 1_ke awal semua nama file.

Nama file, misalnya, DATASET_X_Y_Zdan hasilnya harus 1_DATASET_X_Y_Z.

Saya tidak tahu apa-apa tentang scripting Shell, tapi mungkin ada satu liner untuk terminal.

macydanim
sumber
Tautan @Rinzwind adalah tentang pertanyaan yang berbeda. Pertanyaan Macydanim adalah tentang menambahkan string ke nama file, bukan untuk mengajukan konten.
jc

Jawaban:

38
  • rename 's/^/1_/' * untuk mengganti nama semua file di direktori saat ini

atau

  • rename 's/^/1_/' DATASET*untuk mengganti nama semua file dalam direktori saat ini dimulai dengan DATASETnamanya

Penjelasan: ungkapan s/^/1_/mengatakan: "ganti awal nama file (yang berarti simbol ini -> ^) 'dengan 1_".

dAnjou
sumber
Jika Anda renametidak melakukan ini di luar kotak, Anda perlu menginstal prename(PERL mengganti nama).
user1359
14

Anda dapat dengan mudah mengganti nama semua file dalam pengetikan direktori saat ini (dengan asumsi Anda menggunakan bash):

for i in *; do mv "$i" 1_"$i"; done

jelas menerimanya dengan hati-hati; itu akan menghapus SEMUA file di direktori saat ini yang 'terlihat' (nama file tidak dimulai dengan '.')

karlacio
sumber
Ini adalah solusi pertama yang benar yang saya temukan, yang dapat digunakan untuk menambahkan sesuatu seperti .csvke subset file, dengan ekspresi wild card yang diubah sebagai ganti *. +1
Zelphir Kaltstahl
Wow! Loop di CLI! Ini baru. :)
Raymond Wachaga
9

Anda bisa menggunakan pyRenamer . Itu dapat ditemukan di pusat perangkat lunak Ubuntu. masukkan deskripsi gambar di sini Pola file asli harus {X} dan pola file yang diubah namanya harus 1_ {1}

nickguletskii
sumber
Salah satu program favorit saya
Allan