4

Я выполнил восстановление для старых удаленных файлов! Процесс был полным успехом и восстановил файлы много лет назад.

Теперь проблема проходит через все 400000 файлов, восстановленных только по типу JPG.

Чтобы справиться с этим, я уже разделил файлы по размеру и сохранил те, которые соответствуют критериям, в другом каталоге:

find /path/to/files/ -size +100k -print0 | xargs -0 cp --target-directory=/path/to/filtered/files/

Поскольку файлы должны анализироваться удаленно, я подготовил веб-страницу для отображения всех файлов, что позволяет сохранять их локально. Эта веб-страница представит файлы 20 одновременно со стрелками навигации!


Мой вопрос заключается в том, как разделить 400000 файлов на подкаталоги, содержащие по 20 файлов в каждом, и переименовать файлы последовательно:

Переименовать в

000001.jpg
000002.jpg
...
000020.jpg

Переместиться в подкаталог, создав подкаталог

page_0001

Повторяйте, пока все 400000 не будут обработаны!

page_0002/000021.jpg
page_0002/000022.jpg
...
page_0002/000040.jpg

2 ответа2

2

У меня та же проблема. Я пишу этот код в BASH, и работал для меня.

Изменить с вашими потребностями:

#/bin/bash

target_prefix=page

SOURCE_DIR=YOUR_DIR #Change this to source dir

N=0
Z=0

for entry in $SOURCE_DIR/*
do
    N=$((N+1))
    Z=$((Z+1))

    if [ "$N" == "1" ]; then
        mkdir $SOURCE_DIR/$target_prefix-$Z
        DIR="$SOURCE_DIR/$target_prefix-$Z"
    fi

    echo "Move image $entry number $N to dir $DIR"

    mv $entry $DIR/$Z.jpg #Change to your file extension

    if [ "$N" == "20" ]; then
                N=0
        fi
done

Надеюсь эта работа.

0

Следующий скрипт Bash должен сделать свое дело, но никаких гарантий.

i=1
for f in *
do
  fn=$(printf "%.6d" $i).jpg
  dn=page_$(printf "%.4d" $(($i%20)))
  mkdir -p $dn
  cp $f "$dn/$fn"
  i=$(($i+1))
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .