แยกเนื้อหาของไดเรกทอรีออกเป็นหลายไดเรกทอรีย่อย


10

ฉันมีไดเรกทอรีซึ่งมีภาพมากกว่าพันภาพ ฉันต้องการแบ่งไฟล์เป็นหลายไดเรกทอรีย่อยโดยแต่ละไฟล์มี 100 ไฟล์ ฉันจะทำสิ่งนี้ได้อย่างไร


ทำซ้ำของunix.stackexchange.com/questions/63265/… (นี่ไม่ใช่เฉพาะ Ubuntu)
Camille Goudeseune

คำตอบ:


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

สิ่งนี้ถูกตั้งค่าสถานะเป็นคุณภาพต่ำ เมื่อคุณเป็น OP คุณสามารถเพิ่มคำอธิบายของสิ่งที่คุณได้ทำไปแล้วได้หรือไม่?
muru

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-number-files-n-folders.html


ฉันกลัวว่าสิ่งนี้จะทำให้เกิดปัญหาหากไดเรกทอรีปัจจุบันมีช่องว่างในเส้นทาง แต่ฉันอาจผิด
val พูดว่า Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.