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=1Ini menginisialisasi variabel
nke 1. -
for f in *.txt; doIni 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 dengannsebagai konter.++simbol memberitahu bash untuk menaikkan variabeln. -
doneIni 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?