2016-12-08 15 views
2

Команда, которая печатает список файлов и папок в текущем каталоге вместе с их общими размерами, - du -sh *. Однако эта команда не содержит список скрытых файлов или папок. Я нашел решение для команды, которая правильно перечисляет скрытые файлы и папки вместе с остальными: du -sh .[!.]* *. Хотя он отлично работает, решение было предоставлено как есть, без каких-либо объяснений.В сценариях оболочки, что значит. [!.] * Означает?

В чем смысл .[!.]*, точно? Как это работает?

ответ

2

Это globbi ng, который в основном сообщает bash, чтобы найти все файлы, начинающиеся с ., за которым следует любой символ, но . и содержащий любой символ после этого.

См. this page для подробного объяснения шаблонов глобуса bash.

+0

Таким образом, он соответствует всем файлам/папкам с префиксом '.', неявным образом исключая пути' .' и '..'. Очень умно! –

+0

Да, я тоже так думал :) Это хороший трюк. Можете ли вы указать страницу, где вы ее нашли? могут быть другие вещи, чтобы учиться ... И я действительно рекомендую прочитать страницу, на которую я указал. Парень, который написал это, знает свой удар. – tgo

+0

Здесь около десяти пятнадцати комментариев сверху: http://www.ducea.com/2006/05/14/tip-how-to-sort-folders-by-size-with-one-command-line- in-linux/ –

3

. - соответствовать ., префикс скрытого файла

[!.] - любой символ, пока это не ., see ref

* - любое количество символов

так это файлы совпадения с образцами начинаются с ., но не ..

1

.[!.]* Значение означает любое имя файла или каталога, начинающееся с ., но не следующее с ., поэтому оно будет содержать все скрытые файлы и каталоги в текущем каталоге, но исключить родительский каталог.

Поскольку это поведение определяется шаблоном оболочки оболочки. Таким образом, вы можете использовать ls .[!.]*, чтобы узнать, что на самом деле находится в оболочке.

BTW, вы можете включить dotglob в свою оболочку, чтобы упростить команду du.

$ shopt -s dotglob 
$ du -sh * 
$ shopt -u dotglob 

С Баш руководство

dotglob Если установлено, Баш включает в себя имена файлов, начинающиеся с `.» в результатах расширения пути.

 Смежные вопросы

  • Нет связанных вопросов^_^