एक निर्देशिका की सामग्री को कई उप निर्देशिकाओं में विभाजित करें


10

मेरे पास एक निर्देशिका है जिसमें हजार से अधिक चित्र हैं। मैं फ़ाइलों को कई उप निर्देशिकाओं में विभाजित करना चाहता हूं, प्रत्येक में 100 फाइलें हैं। मैं यह कैसे करु?


Unix.stackexchange.com/questions/63265/… (यह उबंटू-विशिष्ट नहीं है) का डुप्लिकेट ।
केमिली गौडेय्यून

जवाबों:


23

निम्नलिखित मेरे लिए अच्छी तरह से काम किया। टर्मिनल में डायरेक्टरी खोलें, और निम्नलिखित स्क्रिप्ट को कॉपी और पेस्ट करें, एंटर दबाएं। उप निर्देशिकाओं को 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

इसे निम्न गुणवत्ता के रूप में चिह्नित किया गया था। जब से आप ओपी हैं, क्या आप जो कुछ भी कर चुके हैं उसका स्पष्टीकरण जोड़ सकते हैं?
मुरु

1
किया हुआ। एक स्पष्टीकरण जोड़ा है।
आईएज

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


मुझे डर है कि अगर वर्तमान निर्देशिका में पथ में स्थान है, तो यह समस्या पैदा करेगा, लेकिन मैं गलत हो सकता हूं।
वैल का कहना है कि मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.