Mac에 2000개의 PDF 파일이 포함된 폴더가 있습니다. 명령줄을 사용하여 100개의 PDF마다 동일한 디렉터리에 생성될 다른 폴더로 이동하고 싶습니다. 이렇게 하면 내 홈 디렉토리에 각각 100개의 PDF가 포함된 20개의 폴더(1, 2 등의 이름)가 있게 됩니다. 어떻게 해야 하나요?
답변1
카운터를 증가시켜 디렉토리를 생성하는 동안 (위치 매개변수 범위)로 set
100개의 파일을 일괄 처리 할 수 있습니다."${@:START:COUNT}"
shift 100
c
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