디렉토리의 내용을 여러 하위 디렉토리로 분할


답변:


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


현재 디렉토리에 경로에 공백이 있으면 문제가 발생 할까 걱정되지만 잘못되었을 수 있습니다.
val은
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.