В Linux я бы использовал «/ opt» для пользовательского программного обеспечения. В FreeBSD?

Простой комбинации mkdir -p и mv должно быть достаточно

for f in *; do d="${f:0:2}"; mkdir -p "$d"; mv -t "$d" -- "$f"; done

Демонстрация:

$ ls
0dckGYH5.jpg  32_17pxH.png  32Pz5-WQ.png  Hsf4BQW9.jpg  xh-fa3Nu.gif  zYtBEaKA.png

$ for f in *; do d="${f:0:2}"; mkdir -p "$d"; mv -t "$d" -- "$f"; done

$ tree .
.
├── 0d
│   └── 0dckGYH5.jpg
├── 32
│   ├── 32_17pxH.png
│   └── 32Pz5-WQ.png
├── Hs
│   └── Hsf4BQW9.jpg
├── xh
│   └── xh-fa3Nu.gif
└── zY
    └── zYtBEaKA.png

5 directories, 6 files

Если версия mkdir в вашей системе не имеет опции -p, то вы можете проверить существование каталога явно, например. g.

 for f in *; do d="${f:0:2}"; [[ -d "$d" ]] || mkdir "$d"; mv -t "$d" -- "$f"; done
3
29.04.2017, 14:40
1 ответ

Использование /opt было бы хорошим вариантом в большинстве Unix, которые не используют его ни для чего другого.

FreeBSD не будет использовать /opt в своей базовой системе и использует /usr/local для своих пакетов.

См. также раздел «Структура каталогов» в справочнике FreeBSD (где /opt вообще не упоминается).

5
27.01.2020, 21:18

Теги

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