Saya punya 14 file yang semuanya menjadi bagian dari satu teks. Saya ingin menggabungkan mereka menjadi satu. Bagaimana cara melakukannya?
files
text-processing
Ivan
sumber
sumber
*
dalam urutan "alami". Jika Anda memiliki "file1.txt ... file9.txt ... file14.txt" itu tidak akan berfungsi karena file1? .Txt akan mengurutkan antara file1.txt dan file2.txt. Anda harus mengubah nama mereka menjadi "file01.txt ... file09.txt ... file14.txt". Katakanecho *
jika Anda tidak yakin.numeric_glob_sort
opsinya).Jika file Anda tidak berada di direktori yang sama, Anda dapat menggunakan perintah find sebelum concatenation:
Sangat berguna ketika file Anda sudah dipesan dan Anda ingin menggabungkannya untuk menganalisisnya.
Lebih mudah dibawa:
Ini mungkin atau mungkin tidak mempertahankan pesanan file.
sumber
"*.csv"
, karena shell kemudian akan meneruskan literal*
kefind
.Perintah
sebenarnya memiliki efek samping yang tidak diinginkan dengan memasukkan 'file yang digabungkan' dalam rangkaian, membuat file run-away. Untuk menyelesaikan ini, baik menulis file yang digabungkan ke direktori yang berbeda;
atau menggunakan pencocokan pola yang akan mengabaikan file yang digabungkan;
sumber
cat * > merged-file
bekerja dengan baik. Gumpalan diproses sebelum file dibuat. Jikamerged-file
sudah ada,cat
(setidaknya milik saya) akan mendeteksi bahwa itu adalah file output dan menolak untuk membacanya. JIKA file tersebut sudah ada DAN Anda memiliki pengalihan nanti di dalam pipa, maka jelas tidak bisa melakukan itu, maka kemudian dan hanya Anda mendapatkan file runaway.cat
tidak memiliki cara untuk mendeteksi apakah file tersebut adalah file output. Pengalihan terjadi di shell;cat
hanya mencetak pada stdout.Seperti yang lain dari sini katakan ... Anda dapat menggunakan
cat
Katakanlah Anda memiliki:
Dan Anda ingin hanya
file01
untukfile03
danfileA
untukfileC
:Atau, menggunakan ekspansi brace:
Atau, menggunakan ekspansi brancier yang lebih menarik:
Atau Anda dapat menggunakan
for
loop:sumber
[01-03]
tidak akan berfungsi sebagai pola globbing.Anda dapat menentukan
pattern
file kemudian menggabungkan semuanya sebagai berikut:sumber
Pilihan lain adalah sed:
Atau...
Atau...
Atau tanpa pengalihan ...
Perhatikan bahwa baris terakhir tulis juga merge.txt (bukan wmerge.txt!). Anda dapat menggunakan w "merge.txt" untuk menghindari kebingungan dengan nama file, dan -n untuk output diam.
Tentu saja, Anda juga dapat mempersingkat daftar file dengan wildcard. Misalnya, dalam kasus file bernomor seperti dalam contoh di atas, Anda dapat menentukan rentang dengan kawat gigi dengan cara ini:
sumber