Membagi isi direktori menjadi beberapa sub direktori


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

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

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


Saya khawatir ini akan menimbulkan masalah jika direktori saat ini memiliki ruang di jalur, tapi saya mungkin salah.
val berkata Reinstate Monica
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.