#!/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
Различные дистрибутивы Linux имеют разные инструменты для установки пакетов, известные как менеджеры пакетов -вам нужно использовать правильный для вашего дистрибутива. Yum — это менеджер пакетов для систем Red Hat. Вместо этого вам нужно использовать apt, менеджер пакетов Ubuntu. Попробуйте:
sudo apt install net-tools locate
Этот шаблон должен работать для большинства пакетов в Ubuntu. net-tools
— это пакет, содержащий ifconfig в Ubuntu. ОДНАКО, ifconfig сильно устарел и существует уже несколько лет. Вы должны использовать ip
, который уже должен быть установлен в Ubuntu.
Установите net-tools
и mlocate
в дистрибутиве на основе Debian (Ubuntu):
sudo apt install net-tools
sudo apt install mlocate
updatedb
Сейчас они не поставляются со стандартным модулем.
необходимо установить локацию
apt-get install locate
ifconfig был заменен в пакете по умолчанию, вместо него можно использовать IP, пример команды:
ip address show
ip link show
В противном случае установите инструменты сети для ifconfig
apt-get install net-tools