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 dengann
sebagai konter.++
simbol memberitahu bash untuk menaikkan variabeln
. -
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.
Sisipkan Kedua Karakter Jika Kombinasi Kunci Mati Tidak Diakui (mis. ‘a → á, ‘b → ‘b)?
Mengapa Sudo Mengabaikan Alias?