Dari baris perintah, apa cara termudah untuk menunjukkan isi beberapa file? Direktori saya terlihat seperti di bawah ini.
./WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b
./xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM
./GZnATXO1e5Hh3Bz1bhgJjjwheIjjZqtnXR0hfOyj
./mWz7ehBNoTZmtDh8JG6sxw2lMJFwIovPzxDGECUY
./JN65F5v3RL2ilHPqNSx9N9D4lvVpqpbJ9lASd8TJ
./At9PS4y4nTiXUO0Z0USnbYkTPBla1msQRpwuruqE
./YiPyMZPCaUDZTiTczAvWII9bJrUqLXCFtH2pXEA2
./JoakdlbRFPwAvWp1d4n8RvMoyMeizCoiriL2Sn2U
./wFPWZUus8Yu7UtESGABLCoqDg36cT90USO0xuyUr
./qseI9PgV1EJfZCDyGGeVytajqG7JeX0r7eA5S1JW
./zgFJpNgXyCsaVh38aCuMGuzHwIbwSNB6rQDdh27x
./.htaccess
Sekarang saya ingin melihat isi semua file kecuali .htaccess
. Itu mungkin terlihat seperti:
WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b:
Contents of file WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b.
xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM:
Contents of file xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM.
[...]
Saya pikir ini bisa dilakukan dengan kombinasi find, xargs dan cat, tapi saya belum menemukan caranya. Terima kasih atas waktunya!
command-line
files
Znarkus
sumber
sumber
Jawaban:
Dua perintah standar
head
dantail
cetak header dengan nama file jika Anda memberikan lebih dari satu argumen file. Untuk mencetak seluruh file, gunakantail -n +1
(cetak dari baris pertama dan seterusnya, semuanya).Di sini, sepertinya Anda ingin melihat setiap file kecuali satu file yang namanya dimulai dengan titik. File dot "tersembunyi" di bawah unix: mereka tidak muncul dalam output default
ls
atau dalam pertandingan wildcard. Jadi mencocokkan setiap file yang tidak tersembunyi dilakukan dengan adil*
.(Sebenarnya,
tail -n +1 -- *
diperlukan jika salah satu nama file dimulai dengan a-
.)sumber
--
pengubah?--
untuk menandakan akhir opsi adalah konvensi yang dipatuhi sebagian besar perintah. Misalnyatail -n +1 -- -f -g
memberitahutail
itu-f
dan-g
merupakan file untuk dibaca (operan) dan bukan opsi. Ini adalah pedoman 10 dalam pedoman sintaks utilitas POSIX (dokumen yang ditujukan untuk penulis utilitas). Saya tidak memiliki saran bacaan yang ditujukan untuk pengguna akhir, saya berharap tutorial unix yang baik untuk membahasnya di beberapa titik.find
, tetapi kemudian menggunakan beberapa exec dengan format cetak: Cara mudah untuk menggunakanfind
dantail
adalah:find . -type f -print0 -name "*" | xargs -0 tail -n +1 --
(-print0
danxargs -0
dan--
memastikan bahwa perintah juga bekerja dengan nama file dengan spasi atau mulai dengan -)Anda dapat melakukan semuanya dalam satu dengan
find
:Itu memberitahu
find
untuk menemukan semua file (-type f
) di direktori saat ini (.
) kecuali (-not
) satu bernama.htaccess
(-name .htaccess
). Kemudian ia mencetak (-printf
) baris baru diikuti dengan nama file (%p
), dan kemudian berjalancat
pada file (-exec cat {} \;
). Itu akan memberi Anda output seperti:Jika Anda sering melakukan ini, mungkin ada gunanya menempelkannya di skrip shell atau fungsi; Saya punya satu nama
cats
yang melakukan hal itu:Itu loop atas setiap argumen nama file, mencetak nama file (dalam huruf tebal hijau), dan kemudian kucing file:
Maka perintahnya adalah:
sumber
Untuk menampilkan konten semua file di folder saat ini, coba:
dan serupa, tetapi secara rekursif:
Formatnya akan:
filename: content
.Untuk memiliki format yang sama seperti yang disarankan, itu akan menjadi:
Catatan samping:
\x00
) dalam contoh di atas mencegah menampilkan file biner (yang-I
sebenarnya sedang dilakukan, tetapi kami masih menggunakan beberapa pola).*
), secara otomatis mengabaikan file tersembunyi seperti.htaccess
.Lihat juga: grep: tampilkan nama file satu kali, lalu tampilkan konteks dengan nomor baris di Unix SE
sumber
grep -r ^
sudah cukup.Anda bisa menggunakan ini:
sumber
Jika Anda ingin menyempurnakan dan tidak kehilangan terlalu banyak waktu dengan pipa, temukan dan semuanya (meskipun menjadi toolchain paling kuat yang pernah Anda temukan)
coba saja menggunakan for-loop, cat, dll.
sumber
Jika Anda ingin mencetaknya, gunakanlah secara rekursif (untuk file dengan ekstensi .sql, misalnya):
sumber