Tách nội dung của một thư mục thành nhiều thư mục con


Câu trả lời:


23

Sau đây làm việc tốt cho tôi. Mở thư mục trong terminal, và chỉ cần sao chép và dán đoạn script sau, nhấn enter. thư mục con sẽ được tạo bên trong có tên dir_001, dir_002, v.v.

i=0; 
for f in *; 
do 
    d=dir_$(printf %03d $((i/100+1))); 
    mkdir -p $d; 
    mv "$f" $d; 
    let i++; 
done

Điều này đã được gắn cờ là chất lượng thấp. Vì bạn là OP, bạn có thể thêm một lời giải thích về những gì bạn đã làm không?
muru

1
làm xong. Đã thêm một lời giải thích.
Aneeez

1

Di chuyển số lượng tệp cố định bằng cách sử dụng mảng với phạm vi và bù.

#!/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

Điều này sẽ nhắc bạn với bao nhiêu thư mục bạn muốn và tiền tố thư mục con. Lệnh ls chỉ là một lời nhắc nhở về số lượng tệp bạn có.

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

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


Tôi sợ điều này sẽ gây ra vấn đề nếu thư mục hiện tại có khoảng trắng trong đường dẫn, nhưng tôi có thể sai.
val nói Phục hồi lại
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.