GNU/Linux >> Belajar Linux >  >> Linux

Ganti Nama Mass File Bash Dengan Penghitung?

Saya ingin mengganti nama semua file dalam folder dengan PREFIX+COUNTER+FILENAME

misalnya
masukan:

england.txt  
canada.txt  
france.txt

keluaran:

CO_01_england.txt  
CO_02_canada.txt  
CO_03_france.txt

Jawaban yang Diterima:

Ini melakukan apa yang Anda minta:

n=1; for f in *.txt; do mv "$f" "CO_$((n++))_$f"; done

Cara kerjanya

  • n=1

    Ini menginisialisasi variabel n ke 1.

  • for f in *.txt; do

    Ini memulai pengulangan semua file di direktori saat ini yang namanya diakhiri dengan .txt .

  • mv "$f" "CO_$((n++))_$f"

    Ini mengganti nama file menjadi CO_ awalan dengan n sebagai konter. ++ simbol memberitahu bash untuk menaikkan variabel n .

  • done

    Ini menandakan akhir dari loop.

Peningkatan

Versi ini menggunakan printf yang memungkinkan kontrol yang lebih besar atas bagaimana nomor akan diformat:

n=1; for f in *.txt; do mv "$f" "$(printf "CO_%02i_%s" "$n" "$f")"; ((n++)); done

Khususnya, %02i format akan menempatkan nol di depan nomor saat n masih dalam satu digit.


Linux
  1. Membaca Baris Dari File Dengan Bash:Untuk Vs. Ketika?

  2. Untuk Loop Dengan Nama File?

  3. Mengulang konten file di Bash

  1. Cara mengganti spasi pada nama file menggunakan skrip bash

  2. Menambahkan stempel waktu ke nama file dengan mv di BASH

  3. Bagaimana cara memeriksa apakah suatu file kosong di Bash?

  1. Tulis ke file .txt?

  2. Redirect semua output ke file menggunakan Bash di Linux?

  3. Tidak dapat mengganti nama file yang namanya dimulai dengan tanda hubung