«ModuleNotFoundError: в различных командах не появляется модуль с именем« apt_pkg »

#!/bin/sh

for pathname in Foo/Bar1/File*; do
    filename=${pathname##*/}
    cat "$pathname" \
        "Foo/Bar2/$filename" \
        "Foo/Bar3/$filename" >"combined/all_$filename"
done

Это зациклило бы на всех файлах, чьи имена соответствуют File*вFoo/Bar1(мы предполагаем, что шаблон точно соответствует именам, которые нас действительно интересуют ).

Для каждого такого файла мы извлекаем часть имени файла из пути, что дает$filename(это также можно было бы сделать с помощьюfilename=$(basename "$pathname")). Затем мы объединяем исходный файл с соответствующими файлами в каталогах Foo/Bar2и Foo/Bar3, записывая результат в новый файл all_$filenameв каком-либо другом каталоге.


С небольшой проверкой ошибок:

#!/bin/sh

for pathname in Foo/Bar1/File*; do
    if [ ! -f "$pathname" ]; then
        printf '% is not a regular file, skipping\n' "$pathname" >&2
        continue
    fi

    filename=${pathname##*/}

    if [ -f "Foo/Bar2/$filename" ] &&
       [ -f "Foo/Bar3/$filename" ]
    then
        cat "$pathname" \
            "Foo/Bar2/$filename" \
            "Foo/Bar3/$filename" >"combined/all_$filename"
    else
        printf 'Missing %s or %s\n' "Foo/Bar2/$filename" "Foo/Bar3/$filename" >&2
    fi
done

Вариант, который также позволяет использовать различное количество BarNподкаталогов. Предполагается , что каждый BarNкаталог нумеруется последовательно от 1 до некоторого большого числа.

#!/bin/sh

# This is just used to count the number of BarN subdirectories.
# The number of these will be $#.
set -- Foo/Bar*/

for pathname in Foo/Bar1/File*; do
    filename=${pathname##*/}

    n=1
    while [ "$n" -le "$#" ]; do
        if [ ! -f "Foo/Bar$n/$filename" ]; then
            printf '%s missing, %s will be incomplete\n' \
                "Foo/Bar$n/$filename" "combined/all_$filename" >&2
            break
        fi

        cat "Foo/Bar$n/$filename"
        n=$(( n + 1 ))
    done >"combined/all_$filename"
done
0
21.05.2020, 10:25
1 ответ

Исходный ответ от https://askubuntu.com/q/1242009/747557, кредит @Hmdbbgh. Решение, которое сработало для меня, заключалось в переустановке python3 -apt :

.
sudo apt remove python3-apt
sudo apt autoremove
sudo apt autoclean
sudo apt install python3-apt
12
18.03.2021, 23:34

Теги

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