Извлечение определенных имен файлов и помещение их в папку с их именем

У вас ошибка в конфигурации объявления обратной зоны на подчиненном устройстве.

zone "0.244.224.10" IN {... }

должно быть

zone "224.10.in-addr.arpa" IN {... }

Я удивлен, что это не было зафиксировано и сообщено в файлах журналов ведомого устройства как ошибка конфигурации. (Ты уверен, что он тебе об этом не сказал?)

0
14.08.2019, 04:42
2 ответа
for file in [a-z][a-z][a-z][a-z][0-9][0-9][0-9][0-9]; do
    mkdir -p "${file:0:4}" && mv "$file" "${file:0:4}"
done

Циклfor-перебирает имена файлов в текущем каталоге с четырьмя символами. и четыре цифры и присваивает одно имя файла переменной fileна каждом шаге.

mkdirсоздает целевой каталог. Использование флага -pпредотвращает сообщение об ошибке, если каталог уже существует, а ${file:0:4}оставляет первые четыре символа текущего имени файла. Если команда выполнена успешно, файл перемещается в этот каталог.

1
28.01.2020, 02:39

Думаю, так и будет:

cd your_source_dir || exit

for file in *; do
  if [[ $(echo "$file" | grep -Pw "[a-z]{4}[0-9]{4}") ]]; then
    dir="${file:0:4}"
    [[ -d "$dir" ]] || mkdir "$dir"
    [[ -f "$file"]] && mv "$file" "$dir/"
  fi
done
0
28.01.2020, 02:39

Теги

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