Как я получаю количество ссылок на файл в папке файлов с теми ссылками?

Опция -t просто удаляет предпочтения пиннинга apt и устанавливает выбранный выпуск с приоритетом 990, эквивалентным этому:

Package: *
Pin: release a=testing # for testing
Pin-Priority: 900

Этот приоритет недостаточен, чтобы заставить пакет опуститься. Для принудительного понижения рейтинга пакета вам нужно 1000 или более приоритетов для выпуска, который вы пытаетесь понизить до, или -1 или менее для пакета, версия которого пришла из выпуска, который вы хотите удалить.

package/release делает что-то совершенно другое. Она выбирает последнюю версию в архиве пакета, если их несколько, и устанавливает только этот пакет. Эквивалент:

apt-get download package=version
dpkg -i --force-downgrade package.deb

В общем, и -t, и package/release следуют разной процедуре, и единственные команды, способные понизить рейтинги пакетов из apt - это явные селекторы версий: package=version and package/release.

1
13.04.2017, 15:36
2 ответа

Я думаю, что если вы дадите шаблоны в качестве ввода в GREP , используя stdin , это будет Раздатные результаты для всех шаблонов. Поэтому AFAIK единственный способ преодолеть эту проблему, состоит в том, чтобы вызвать новый экземпляр GREP для каждого шаблона.

Этот скрипт будет работать в этом случае

for animalName in $(ls -1 ~/animals | cut -d. -f1);
    do
        echo "$animalName: $(grep -R -h -c $animalName ~/people | paste -sd+ | bc)";
done

Это на линии того, что вы пытались с некоторыми незначительными изменениями. Во-первых, -H опция в GREP подавляет печать имен файлов. Во-вторых, сразу GREP , вывод для шаблона будет похож

1
0
3
2

, мы хотим добавить все эти номера. Команда присоединяется к этим линиям с помощью + , а затем проходит образоваенную строку в BC для расчета результата.

Примечание. Если имена ваших животных содержат Newlines или любые специальные символы (в какой-то странной земле), не рекомендуется разбирать выход Ls .

0
27.01.2020, 23:50

Почему-то мой ~/.Xauthority не принадлежит пользователю debian . Изменение владельца позволило мне войти в систему:

chown -R debian  /home/debian/.Xauthority 
-121--185878-

Я думаю, что если вы дадите узоры в качестве ввода в grep с помощью stdin , это объединит результаты для всех узоров. Таким образом, AFAIK единственный способ преодолеть эту проблему - вызвать новый экземпляр grep для каждого образца.

Этот сценарий будет работать в данном случае

for animalName in $(ls -1 ~/animals | cut -d. -f1);
    do
        echo "$animalName: $(grep -R -h -c $animalName ~/people | paste -sd+ | bc)";
done

Это на линии того, что вы пытались с некоторыми незначительными изменениями. Во-первых, опция -h в grep подавляет печать имен файлов. Во-вторых, с помощью grep вывод для образца будет похож на

1
0
3
2

Мы хотим добавить все эти числа. Команда paste соединяет эти строки с + и затем передает сформированный ряд в bc для вычисления результата.

ПРИМЕЧАНИЕ: Если ваши имена животных содержат новые строки или какие-либо специальные символы (в какой-то странной стране), не рекомендуется анализировать выходные данные ls .

-121--185882-

Вот способ получения нужных результатов с помощью GNU awk :

awk '
    BEGINFILE {
        if (FILENAME ~ "^animals/"  ||  FILENAME ~ "/animals/") {
                this_name = substr(FILENAME, index(FILENAME,"animals/")+length("animals/"))
                i = index(this_name, ".")
                if (i > 0) this_name = substr(this_name, 1, i-1)
                critter[++num] = this_name
                critter_count[num] = 0
                nextfile
        }
    }
    {
        for (i = 1; i <= num; i++) {
                if ($0 ~ critter[i]) critter_count[i]++
        }
    }
    END {
        for (i = 1; i <= num; i++) print critter[i] ": " critter_count[i]
    }
'  animals/*  people/*
  • При запуске нового файла ( BEGINFILE ), проверьте, начинается ли его название с animals/ или содержит /animals/. Это позволяет говорить животные/* , ./животные/* или ~/животные/* . Если это так,

    • Извлеките подстроку справа от животных/.
    • Затем найдите . ; в случае обнаружения извлеките подстроку слева от нее.
    • Добавьте эту последовательность (базовое имя файла с удаленным каталогом и расширением) в массив crester [] , и инициализировать соответствующий счетчик _ для 0.

    ☛ Обратите внимание, что BEGINFILE и nextfile недоступны в POSIX awk.

  • В противном случае (если мы просматриваем файл people ), петля через имена животных ( твари ) и подсчитать соответствующие строки.
  • По достижении END всех входных данных, сообщить имена животных которые были извлечены из имен файлов животных , и подсчеты того, как часто каждый из них появлялся в файле people .

Рекурсивный поиск в каталоге people не выполняется; Я не видел в вопросе никаких утверждений о том, что это желательно.

1
27.01.2020, 23:50

Теги

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