셸에서만 CSV를 숫자로 나눕니다.
결과
.
├── sample.csv
├── main.sh
main.sh
에 대한 설명입니다.※오류 처리는 생략합니다.
#!/bin/sh
set -e
# file path
[ ! -e "$1" ] && exit 1 || datafile="$1"
# File extension deletion
filename="${datafile%.*}"
# Get number of lines
row=$(grep -c '' $datafile)
# Obtaining the number of splits
sep="$2"
# Number of directories created
dir_cnt=$(awk -v row="$row" -v sep="$sep" 'BEGIN {
i=row/sep
printf("%d\n",i+=i<0?0:0.999)
}
'
)
# Folder creation
seq -f "${filename}_%01.0f" 1 ${dir_cnt} |
xargs mkdir -p
# File division
split -l ${sep} -a 2 $datafile "${filename}_"
# File movement
count=1
for i in `find . -type f -name "${filename}_*" | sort`
do
mv $i "${filename}_${count}/${i//_*/_${count}}.csv"
let count++
done
sh main.sh sample.csv 25
.
├── main.sh
├── sample.csv
├── sample_1
│ ├── sample_1.csv
├── sample_2
│ ├── sample_2.csv
├── sample_3
│ ├── sample3.csv
├── sample_4
│ ├── sample4.csv
보충
생성된 디렉토리 수
반올림
100/15
와 같은 십진수의 경우 디렉토리가 정상적으로 생성되지 않는다. printf
를 사용하여 정수로 반올림합니다. 파일 분할 및 이동
확장자는 mv에 의해 추가됩니다.
--additional-suffix
)가 Mac 등에서 기본값이 아닙니다. 링크
Reference
이 문제에 관하여(셸에서만 CSV를 숫자로 나눕니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kamekuremaisuke/split-csv-by-number-in-shell-only-1255텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)