Ada perintah standar untuk pemisahan file - split.
Misalnya, jika saya ingin membagi file kata dalam beberapa potongan 10.000 baris, saya dapat menggunakan:
split -dl 10000 words wrd
dan itu akan menghasilkan beberapa file dari form wrd.01, wrd.02 dan seterusnya.
Tapi saya ingin memiliki ekstensi spesifik untuk file-file itu - misalnya, saya ingin mendapatkan file wtd.01.txt, wrd.02.txt.
Apakah ada cara untuk melakukannya?
Ini tidak tersedia saat itu tetapi dengan versi yang lebih baru (
≥ 8.16
)gnu split
seseorang dapat menggunakan--additional-suffix
saklar untuk memiliki kontrol atas ekstensi yang dihasilkan. Dariman split
:jadi ketika menggunakan opsi itu:
potongan yang dihasilkan akan secara otomatis berakhir pada
.txt
:sumber
gnu split
, bagian darignu coreutils
. Ini juga tersedia di OSX jika Anda menginstalcoreutils
melaluihomebrew
tetapi perhatikan bahwa secara default, pada OSX,gnu
utilitas memilikig
prepended untuk nama mereka (misalnyagstat
bukanstat
) sehingga Anda memanggilnya sebagaigsplit
(atau mengubah PATH sesuai panduan di sini jika Anda ingin untuk menggunakannya sebagaisplit
lebih dari OSXsplit
). HTH.gsplit
untuk mendapatkan sufiks numerik (-d) agar berfungsi.Tugas-tugas seperti itu paling baik dikelola dengan shell. Gunakan split dan kemudian tulis loop sederhana untuk mengubah nama file. Misalnya
akan mengganti nama file wrd.01, wrd.02, dll Anda sehingga semuanya memiliki ekstensi .txt.
sumber
split+mv
kombo lebih dari 6 kali lebih cepat dariawk
(kira-kira 3s vs 18s ) untuk file input 10 juta baris (75 MB) ... teks di setiap baris adalah nomor baris sendiri ... Terima kasih telah menyatakan kembali "jelas" :)split + mv
adalah 75 kali lebih cepat dariawk
: Bila ada 100 kali lebih file,split + mv
adalah 1,5 kali lebih cepat dariawk
. Jadi, bagi saya,split + mv
metode ini menang, mudah. Ini sebagai consice (bisa dibilang lebih), dan lebih cepat dariawk
.for file in wrd.*; do mv "$file" "$file.txt"; done
:)