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.