Membagi isi direktori menjadi beberapa sub direktori

10

Saya memiliki direktori yang berisi lebih dari ribuan gambar. Saya ingin membagi file menjadi beberapa direktori sub, masing-masing berisi 100 file. Bagaimana saya melakukan ini?

Aneeez
sumber
Gandakan unix.stackexchange.com/questions/63265/… (ini bukan khusus untuk Ubuntu).
Camille Goudeseune

Jawaban:

23

berikut ini bekerja dengan baik untuk saya. Buka direktori di terminal, dan cukup salin & tempel skrip berikut, tekan enter. sub direktori akan dibuat di dalam memiliki nama dir_001, dir_002 dan sebagainya.

i=0; 
for f in *; 
do 
    d=dir_$(printf %03d $((i/100+1))); 
    mkdir -p $d; 
    mv "$f" $d; 
    let i++; 
done
Aneeez
sumber
Ini ditandai sebagai kualitas rendah. Karena Anda adalah OP, dapatkah Anda menambahkan penjelasan tentang apa yang telah Anda lakukan?
muru
1
selesai Telah menambahkan penjelasan.
Aneeez
1

Memindahkan jumlah file tetap menggunakan array dengan rentang dan offset.

#!/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
bac0n
sumber
0

Ini akan meminta Anda dengan berapa banyak direktori yang Anda inginkan dan awalan sub-direktori. Perintah ls hanyalah pengingat berapa banyak file yang Anda punya.

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

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

bourehim youssef
sumber
Saya khawatir ini akan menimbulkan masalah jika direktori saat ini memiliki ruang di jalur, tapi saya mungkin salah.
val berkata Reinstate Monica