ディレクトリの内容を複数のサブディレクトリに分割する


回答:


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 2015

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


現在のディレクトリのパスにスペースが含まれていると問題が発生する可能性がありますが、間違っている可能性があります。
ヴァルは
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.