Перемещение файлов в каталоги, названные в честь первых 6 цифр имени файла

Я запустил make и make install после установки всего рекомендованного, но безрезультатно. Начато это сообщение

Сборка Python завершена, но необходимые биты, необходимые для сборки этих модулей, не найдены: bsddb185 sunaudiodev Чтобы найти необходимые биты, загляните в setup.py в detect_modules ( ) для имени модуля .

Я собирался сдаться, попытаться стереть / удалить все это и повторить попытку ...но я наткнулся на это предложение

python setup.py install

Я запустил его, теперь IDLE работает .... но я все еще получаю уведомление о bsddb185 и sunaudiodev

2
16.12.2018, 23:52
3 ответа

Если вы знаете, сколько лет охватывают имена этих файлов, вы можете просто перебором -заставить их:

for year in {1996..2018}; do
    for month in {01..12}; do
        mkdir -p ${year}-${month}
        for filetype in nef xmp; do
            mv ${year}-${month}*.${filetype} ${year}-${month}/
        done
    done
done
3
27.01.2020, 21:58

Если вы хотите просто массово создавать каталоги по шаблону, вы можете использовать:

mkdir -p ~/{0001,0002,0003,...,XXXX}/{01,02,03,...,XX}

Убедитесь, что вы заменили переменные значениями, которые действительно хотите использовать, чтобы пример создания подкаталога -для лет, месяцев и дней выглядел следующим образом:

mkdir -p ~/{1998..2018}/{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}/{01..31}

Затем вы можете выполнить поиск по месяцам, в которых нет 31 дня, и удалить их, как описано в этом посте . После этого у вас есть задача рассортировать фотографии по нужным каталогам. Это делается очень похоже на поиск и удаление и описано в этого поста .

Обратите внимание, что это создаст подкаталоги -в вашем текущем рабочем каталоге. Как упомянул пользователь DopeGhoti, вы можете создать цикл for для одновременного выполнения каждого шага. Удачи!

0
27.01.2020, 21:58

Вот решение на основе цикла с ограниченным набором команд, доступным в стандартном QNAP:

#!/bin/bash
for file in ????-??-??_*.{nef,xmp}
do
    yyyymm=${file/-??_*}
    echo mkdir -p "$yyyymm"
    echo mv -f "$file" "$yyyymm/"
done

Поместите это в файл, например /root/fixup, перейдите в каталог, содержащий ваши многочисленные файлы, и запустите bash /root/fixup. Он создаст каталоги yyyy-mmпо запросу на основе имен файлов, которые он обрабатывает.

Как написано, изменений не будет. Когда вы будете довольны тем, что похоже, что это сработает, удалите слово echoиз двух строк в конце скрипта.

1
27.01.2020, 21:58

Теги

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