команда ifconfig и locate не найдена

#!/bin/sh

files_per_dir=500

set -- file_*

printf 'There are %d files\n' "$#"
printf 'Putting %d files in each new directory\n' "$files_per_dir"

N=0 # directory counter
n=0 # file counter

for filename do

    if [ "$(( n % files_per_dir ))" -eq 0 ]; then
        N=$(( N + 1 ))
        dir="dir_$N"
        printf 'Creating directory %s\n' "$dir"
        # mkdir "$dir"
    fi

    n=$(( n + 1 ))

    printf 'Moving %s to %s\n' "$filename" "$dir"
    # mv -i -- "$filename" "$dir"

done

В приведенном выше примере в каждый каталог помещается 500 файлов. (Фактические команды, которые изменяют что-то, были закомментированы для безопасности ). Предполагается, что имена файлов соответствуют file_*, и каждый новый каталог будет называться dir_N, где N— положительное целое число.

Если вы хотите переместить файлы на основе их числовых имен (вышеприведенное сортирует файлы в лексикографическом порядке ), затем используйте

printf 'Moving %s to %s\n' "file_$n" "$dir"
# mv -i -- "file_$n" "$dir"

вместо (т.е. замените соответствующие две строки в первом скрипте на эти, в таком порядке ).


Укороченная версия:

#!/bin/sh

files_per_dir=500

set -- file_*

n=0

for filename do
    n=$(( n + 1 ))

    N=$(( (n/files_per_dir) + 1 ))
    [ ! -d "dir_$N" ] && mkdir "dir_$N"

    # mv -i -- "$filename" "dir_$N"
    # or...
    # mv -i -- "file_$n" "dir_$N"
done
0
29.01.2021, 10:16
3 ответа

Различные дистрибутивы Linux имеют разные инструменты для установки пакетов, известные как менеджеры пакетов -вам нужно использовать правильный для вашего дистрибутива. Yum — это менеджер пакетов для систем Red Hat. Вместо этого вам нужно использовать apt, менеджер пакетов Ubuntu. Попробуйте:

sudo apt install net-tools locate

Этот шаблон должен работать для большинства пакетов в Ubuntu. net-tools— это пакет, содержащий ifconfig в Ubuntu. ОДНАКО, ifconfig сильно устарел и существует уже несколько лет. Вы должны использовать ip, который уже должен быть установлен в Ubuntu.

3
18.03.2021, 22:33

Установите net-toolsи mlocateв дистрибутиве на основе Debian (Ubuntu):

sudo apt install net-tools
sudo apt install mlocate
updatedb
1
18.03.2021, 22:33

Сейчас они не поставляются со стандартным модулем.

необходимо установить локацию

apt-get install locate

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

ip address show

ip link show

В противном случае установите инструменты сети для ifconfig

apt-get install net-tools
1
18.03.2021, 22:33

Теги

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