Manfaatkan ekspansi brace:
du -b maybehere*/{*,.[^.],.??*}
atau sebagai alternatif
du -b maybehere*/{,.[^.],..?}*
Logika di balik ini mungkin tidak jelas, jadi inilah penjelasannya:
*
cocok dengan semua file yang tidak disembunyikan
.[^.]
cocok dengan file yang namanya dimulai dengan satu titik diikuti dengan bukan titik; itu hanya 2 nama file karakter dalam bentuk pertama.
.??*
cocok dengan file tersembunyi yang panjangnya minimal 3 karakter
..?*
seperti di atas, tetapi karakter kedua harus berupa titik
Intinya adalah untuk mengecualikan tautan keras ke direktori saat ini dan induk ( .
dan ..
), tetapi sertakan semua file normal sedemikian rupa sehingga masing-masing akan dihitung hanya sekali!
Misalnya, yang paling sederhana adalah menulis
du -b maybehere*/{.,}*
Ini berarti bahwa daftar berisi titik .
dan "tidak ada" (tidak ada yang berada di antara ,
dan menutup }
), sehingga semua file yang tersembunyi (yang dimulai dari titik) dan semua file yang tidak tersembunyi (yang dimulai dari "tidak ada") akan cocok. Masalahnya adalah ini juga cocok .
dan ..
, dan ini kemungkinan besar bukan yang Anda inginkan, jadi kami harus mengecualikannya.
Kata terakhir tentang ekspansi brace.
Ekspansi Brace adalah mekanisme di mana Anda dapat memasukkan lebih banyak file / string / apa pun ke baris perintah dengan menulis lebih sedikit karakter. Sintaksnya adalah {word1,word2,...}
, yaitu daftar string yang dipisahkan koma yang dimulai dari {
dan diakhiri dengan }
. bash
manual memberikan contoh penggunaan yang sangat mendasar dan sekaligus sangat umum:
$ echo a{b,c,d}e
abe ace ade
maybehere*/.*
dan tambahkan ke atas untuk semua