Розділити вміст каталогу на кілька підкаталогів


10

У мене є каталог, який містить понад тисячу зображень. Я хочу розділити файли на кілька підкаталогів, кожен з яких містить 100 файлів. Як це зробити?


Дублікат unix.stackexchange.com/questions/63265/… (це не конкретно для Ubuntu).
Каміль Ґудсейне

Відповіді:


23

наступне добре працювало для мене. Відкрийте каталог у терміналі та просто скопіюйте та вставте наступний сценарій та натисніть клавішу Enter. підкаталоги будуть створені всередині з іменами dir_001, dir_002 тощо.

i=0; 
for f in *; 
do 
    d=dir_$(printf %03d $((i/100+1))); 
    mkdir -p $d; 
    mv "$f" $d; 
    let i++; 
done

Це було позначено як низька якість. Оскільки ви є оператором, чи можете ви додати пояснення того, що ви зробили?
муру

1
зроблено. Додали пояснення.
Aneeez

1

Переміщення фіксованої кількості файлів за допомогою масиву з діапазоном і зміщенням.

#!/bin/bash

shopt -s nullglob

a=(./src/*)
for ((i=0; i<${#a[@]}; i+=100)); do
    printf -v b ./img_%03d $((++n))
    mkdir -p $b && mv -t $b "${a[@]:$i:100}"
done

0

Це підкаже, скільки потрібних каталогів та префікса підкаталогу. Команда ls - це лише нагадування про кількість файлів у вас.

ls -1 | wc -l

read -p 'How Many Directories: ' F;
read -p 'Sub-Directories Prefix: ' S;

PARRENT=${PWD}
# cd $PARRENT 
n=0
for i in *
do
  if [ $((n+=1)) -gt $F ]; then
    n=1
  fi
  todir=$PARRENT/"$S"_$n
  [ -d "$todir" ] || mkdir "$todir" 
  mv "$i" "$todir" 
done

Джерело: https://www.unix.com/shell-programming-and-scripting/248539-split-folder-huge-number-files-n-folders.html


Я боюся, що це спричинить проблеми, якщо в поточному каталозі є пробіли, але я можу помилитися.
Вал каже Відновити Моніку
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.