2000개의 PDF를 각각 100개의 파일이 포함된 여러 폴더로 이동합니다.

2000개의 PDF를 각각 100개의 파일이 포함된 여러 폴더로 이동합니다.

Mac에 2000개의 PDF 파일이 포함된 폴더가 있습니다. 명령줄을 사용하여 100개의 PDF마다 동일한 디렉터리에 생성될 다른 폴더로 이동하고 싶습니다. 이렇게 하면 내 홈 디렉토리에 각각 100개의 PDF가 포함된 20개의 폴더(1, 2 등의 이름)가 있게 됩니다. 어떻게 해야 하나요?

답변1

카운터를 증가시켜 디렉토리를 생성하는 동안 (위치 매개변수 범위)로 set100개의 파일을 일괄 처리 할 수 있습니다."${@:START:COUNT}"shift 100c

set -- *.pdf
c=1
while (($#)); do
  mkdir ${c}
  if [ $# -ge 100 ]; then
    mv -- "${@:1:100}" ${c}
    c=$((c+1))
    shift 100
  else
    mv -- "${@}" ${c}
    shift $#
  fi
done

답변2

방금 귀하의 특정 문제에 대해 아래 bash 스크립트를 작성했습니다. 이것이 도움이 될 수 있습니다.

#!/bin/bash

DEFAULT_DELIM_SIZE=100
num_of_total_file=$(ls | grep "pdf" | wc -l)
num_of_total_folder=$((num_of_total_file/DEFAULT_DELIM_SIZE))

echo "Total number of pdf files = $num_of_total_file"
echo "Total number of folder will generated if not exist $num_of_total_folder"

# create directories if not exist
for (( i = 0; i < $num_of_total_folder; i++ )); do
    if [[ ! -d $i ]]; then
        mkdir $i
    fi
done

# file name format should be like this <arbitrary_numb>-<folder_num>.pdf
for file in *.pdf; do
    prefix=$(echo $file | awk '{split($0, a, "-"); print a[2]}' | awk '{split($0, a, "."); print a[1]}')
    if [[ -d $prefix ]]; then
        mv $file $prefix
    fi
done

관련 정보