Skorzystaj z rozszerzenia nawiasu klamrowego:
du -b maybehere*/{*,.[^.],.??*}
lub alternatywnie
du -b maybehere*/{,.[^.],..?}*
Logika tego prawdopodobnie nie jest oczywista, więc oto wyjaśnienie:
*
pasuje do wszystkich nie ukrytych plików
.[^.]
dopasowuje pliki, których nazwy zaczynają się od pojedynczej kropki, po której nie następuje kropka; które są tylko 2 znakowymi nazwami plików w pierwszej formie.
.??*
dopasowuje ukryte pliki o długości co najmniej 3 znaków
..?*
jak wyżej, ale drugi znak musi być kropką
Chodzi o to, aby wykluczyć twarde linki do bieżącego i nadrzędnego katalogu ( .
i ..
), ale dołączyć wszystkie normalne pliki w taki sposób, aby każdy z nich był policzony tylko raz!
Na przykład najłatwiej byłoby po prostu napisać
du -b maybehere*/{.,}*
Oznacza to, że lista zawiera kropkę .
i „nic” (nic nie jest pomiędzy ,
i zamykanie }
), więc wszystkie pliki ukryte (zaczynające się od kropki) i wszystkie pliki nie ukryte (które zaczynają się od „nic”) byłyby zgodne. Problem polega na tym, że to również pasuje .
i ..
, i najprawdopodobniej nie jest to, czego chcesz, więc musimy jakoś to wykluczyć.
Ostatnie słowo na temat rozszerzenia nawiasu klamrowego.
Rozwijanie nawiasów klamrowych to mechanizm, dzięki któremu możesz dołączyć więcej plików / ciągów znaków / cokolwiek do wiersza poleceń, pisząc mniej znaków. Składnia jest {word1,word2,...}
, tzn. Jest to lista ciągów oddzielonych przecinkami, które zaczynają się {
i kończą }
. bash
instrukcja podaje bardzo prosty, a jednocześnie bardzo powszechny przykład użycia:
$ echo a{b,c,d}e
abe ace ade
maybehere*/.*
i dołączyć do wszystkich dla wszystkich