Какая команда выводит список всех файлов, начинающихся с «а» и имеющих 1 или 2 цифры, следующие за ними?

Короче говоря, да, изменение содержимого, существующего в моментальном снимке, требует, чтобы LVM копировал содержимое, что замедляет запись.

Однако это происходит независимо от используемой файловой системы, потому что LVM работает на блочном уровне и, таким образом, не знает о файловой системе.

Что касается того, следует ли хранить моментальные снимки только в течение короткого времени, это действительно зависит от того, что лучше всего подходит для -вашего случая использования.

-1
07.09.2019, 20:00
2 ответа

В оболочке zsh,

setopt EXTENDED_GLOB
printf '%s\n' a[[:digit:]](#c1,2)(.)

Шаблон a[[:digit:]](#c1,2)(.)будет соответствовать любому обычному файлу, имя которого начинается с a, за которым следует одна или две цифры. (.)в конце гарантирует, что мы получаем только имена обычных файлов, а [[:digit:]](#c1,2)соответствует одной или двум цифрам.

В shили bashи т. д.,

printf '%s\n' a[[:digit:]] a[[:digit:]][[:digit:]]

Здесь перечислены все имена, которые начинаются с aи затем имеют одну или две цифры. Часто (мы используем один шаблон для имен с одной цифрой, а другой — для имен с двумя цифрами ). Не факт, что вы получите только имена обычных файлов, хотя (вы также можете получить имена каталогов и т. д. ), и если один или другой шаблон (или оба )не совпадают любое имя , шаблон останется нераскрытым (используйте shopt -s nullglobв bash, чтобы вместо этого удалить не -не совпадающие шаблоны ).

Чтобы отсеять любой не -обычный файл, используйте цикл:

for name in a[[:digit:]] a[[:digit:]][[:digit:]]; do
    if [ -f "$name" ]; then
        printf '%s\n' "$name"
    fi
done

Здесь мы применяем явный -fтест к каждому имени. Этот тест будет истинным , если имя относится к обычному файлу (или к символической ссылке на обычный файл ).Если тест верен , мы печатаем имя.

0
28.01.2020, 05:12

Более общее решение, не зависящее от того, какую оболочку вы используете, может выглядеть примерно так:

Helios:t larry$ ls -1
a0
a10
a100
ax
axe
b4
Helios:t larry$ find. -mindepth 1 -maxdepth 1 -type f -regextype egrep -regex '\./a[[:digit:]]{,2}'
./a10
./a0

Но это порождает дополнительный процесс.

0
28.01.2020, 05:12

Теги

Похожие вопросы