Jawaban:
ls *.txt | xargs cat >> all.txt
mungkin bekerja sedikit lebih baik, karena itu akan ditambahkan ke all.txt daripada membuatnya lagi setelah setiap file.
Ngomong-ngomong, cat *.txt >all.txt juga akan bekerja. :-)
Jika beberapa nama file Anda berisi ', "atau spasi xargs akan gagal karena masalah pemisah
Secara umum tidak pernah berjalan xargs tanpa -0 karena akan kembali dan menggigit Anda suatu hari.
Sebaiknya gunakan GNU Parallel:
ls *.txt | parallel cat > tmp/all.txt
atau jika Anda lebih suka:
ls *.txt | parallel cat >> tmp/all.txt
Pelajari lebih lanjut tentang GNU Parallel http://www.youtube.com/watch?v=OpaiGYxkSuQ
all.txt adalah file di direktori yang sama, jadi kucing jadi bingung ketika ingin menulis dari file yang sama ke file yang sama.
Di samping itu:
ls *.txt | xargs cat > tmp/all.txt
Ini akan membaca dari file teks dalam direktori Anda saat ini ke all.txt dalam subdirektori (tidak termasuk dengan *.txt ).
Anda juga bisa menemukan batasan panjang baris perintah. Bagian dari alasan untuk menggunakan xargs adalah bahwa ia membagi input menjadi potongan-potongan berukuran garis perintah yang aman. Jadi, bayangkan sebuah situasi di mana Anda memiliki ratusan ribu file .txt di direktori. ls *.txt akan gagal. Anda perlu melakukannya
ls | grep .txt$ |xargs cat > /some/other/path/all.txt
.txt$ dalam hal ini adalah ekspresi reguler yang cocok dengan semua yang berakhiran .txt (jadi tidak persis seperti itu *.txt, karena jika Anda memiliki file bernama atxt, kemudian *.txt tidak akan cocok dengan itu, tetapi ungkapan reguler akan.)
Penggunaan lintasan lain karena, seperti yang ditunjukkan oleh jawaban lain, all.txt dicocokkan dengan pola *.txt jadi akan ada konflik antara input dan output.
Perhatikan bahwa jika Anda memiliki file dengan ' dalam nama mereka (dan ini mungkin menjadi penyebab unmatched single quote kesalahan), Anda ingin melakukannya
ls | grep --null .txt$ | xargs -0 cat > /some/other/path/all.txt
Opsi --null memberi tahu grep untuk menggunakan output yang dipisahkan oleh a \0 (alias null) karakter alih-alih baris baru default, dan -0 opsi untuk `xargs memberitahu dia untuk mengharapkan inputnya dalam format yang sama. Ini akan berfungsi bahkan jika Anda memiliki nama file dengan baris baru di dalamnya.