Чтобы добавить дополнительное пространство, вам нужно изменить размер 5 вещей:
Что вы можете сделать, это...
pvresize /dev/sda2
lvresize -L +50G /dev/ВАШЕ_ОБЪЕМ_ГРУППЫ_ИМЯ/vg_centos6
Предполагая, что все lib
-каталоги имеют разумные имена без символов новой строки или других странных/экзотических символов:
find / -type d -name "lib*" -print | wc -l
Это предполагает, что вы, согласно "всему поддереву каталогов", означает «где угодно». Измените /
на .
для подсчета только в текущем каталоге или ниже.
Команда find
найдет все каталоги (-тип d
), имя которых начинается с lib
(-name "lib*"
) и распечатайте их (-print
).
Команда wc -l
будет подсчитывать количество строк в выводе команды find
.
Вот решение только для bash -, использующее globstar
параметр оболочки:
$ shopt -s globstar; c=0; for f in ** ; do echo "${f##*/}"; [[ "${f##*/}" =~ ^lib* ]] && [[ -d "$f" ]] && ((c++)); done ; echo $c
Или в формате скрипта для удобства чтения:
#!/usr/bin/env bash
shopt -s globstar
c=0
for f in **
do
echo "${f##*/}"
if [[ "${f##*/}" =~ ^lib* ]] && [[ -d "$f" ]]
then
((c++))
done
echo $c
globstar
позволяет нам включить рекурсивную подстановку и через [[
с сопоставлением с образцом и флагом -d
, чтобы проверить, является ли это каталогом, мы увеличиваем переменную-счетчик $c
, которую мы печатаем в конце.
LC_ALL=C find.//. -name 'lib*' -type d | grep -c //
Вы не можете использовать find. | wc -l
, так как это не будет работать должным образом, если есть пути к файлам с символами новой строки.
Без LC_ALL=C
это могло бы не учитывать имена каталогов, которые начинаются с lib
, но где остальная часть имени содержит байты, которые не образуют допустимые символы.
Сzsh
:
(){echo $#} **/lib*(DN/)