Saya memiliki sekelompok file yang ingin saya beri nama secara konsisten, file-file tersebut dinamai seperti apa
"System-Log-01-01-2009-NODATA.txt"
"Something-Log-01-01-2009-NODATA.txt"
Dan saya ingin mereka sebagai huruf kecil, yyyymmdd, ekstensi .log
"system.20090101.log"
"something.20090101.log"
mmv
tetapi akhirnya berkatrename
saya dapat menggunakan kekuatan regexperl-rename
.Karena saya tidak memiliki perintah ganti nama, saya mengandalkan ini:
sumber
mmv adalah utilitas linux standar untuk memindahkan / mengganti nama banyak file. Ini tersedia dari repo untuk sebagian besar distribusi. Untuk contoh Anda di atas, Anda dapat melakukan:
Untuk informasi lebih lanjut, baca artikel debaday ini atau halaman manual .
sumber
rename
util tidak terlalu "standar". Setiap distro dikirimkan denganrename
alat yang berbeda . Sebagai contoh, di sini di Gentoo,rename
darisys-apps/util-linux
paket dan tidak mendukung regex.Hamish Downer menyarankan
mmv
, tampaknya berguna, khususnya untuk digunakan di dalam skrip.Di sisi lain, untuk kasus umum, Anda mungkin ingin renameutils . Itu memiliki
qmv
danqcp
perintah, yang akan membuka editor teks pilihan Anda (preferensi saya: Vim) dan memungkinkan Anda untuk mengedit nama file tujuan di sana. Setelah menyimpan dan menutup editor,qmv
/qcp
akan melakukan semua penggantian nama.Keduanya
mmv
danqmv
cukup pintar untuk mengubah nama file dalam urutan yang benar dan juga untuk mendeteksi nama melingkar, dan secara otomatis akan membuat file sementara jika diperlukan.sumber
sys-apps/rename
paket, yang memberi Andarenamexm
yang akan melakukan penggantian nama regex serta huruf besar / kecil dan hal-hal baik lainnya.Agar adil:
memberikan hasil ini:
Tapi:
rename -n 's/(\w+)-\w+-(\d{2})-(\d{2})-(\d{4})-NODATA\.txt$/$1.$4$3$2\.log/' *.txt && rename 'y/A-Z/a-z/' System.20090101.log
memberikan output yang tepat:
mengganti saklar {-n} dengan {-v}
sumber
Saya membuat skrip bash kecil untuk melakukan ini:
sumber
ls
output bukan ide terbaik. Pencarian acak berhenti membaca gondrong ini di Unix. SE untuk hiburan Anda. | Selain itu jawaban Anda akan lebih cocok dengan pertanyaan dengantr '[:upper:]' '[:lower:]'