Diviser le contenu d'un répertoire en plusieurs sous-répertoires


Réponses:


23

ce qui suit a bien fonctionné pour moi. Ouvrez le répertoire dans le terminal, et copiez et collez simplement le script suivant, appuyez sur Entrée. des sous-répertoires seront créés à l'intérieur avec les noms dir_001, dir_002 et ainsi de suite.

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

Cela a été signalé comme de faible qualité. Puisque vous êtes l'OP, pourriez-vous ajouter une explication de ce que vous avez fait?
— muru

1
terminé. Ont ajouté une explication.
— Aneeez

1

Déplacez un nombre fixe de fichiers à l'aide d'un tableau avec plage et décalage.

#!/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

Cela vous demandera combien de répertoires vous voulez et le préfixe du sous-répertoire. La commande ls n'est qu'un rappel du nombre de fichiers dont vous disposez.

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

Source: https://www.unix.com/shell-programming-and-scripting/248539-split-folder-huge-number-files-n-folders.html


Je crains que cela ne cause des problèmes si le répertoire actuel contient des espaces dans le chemin, mais je peux me tromper.
— val dit Réintégrer Monica le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.