-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsplit.sh
More file actions
65 lines (47 loc) · 1.35 KB
/
Copy pathsplit.sh
File metadata and controls
65 lines (47 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/bin/bash
if [[ -z "$1" || -z "$2" ]]; then
echo "Arquivo/linhas nao informado!"
exit 1
fi
FILE_PATH=$1
LINES_COUNT=$2
if [ ! -f "$FILE_PATH" ]; then
echo "Arquivo $FILE_PATH nao encontrado!"
exit 1
fi
# diretorio do arquivo
FILE_DIR=$(dirname $FILE_PATH)
echo "FILE_DIR: $FILE_DIR"
# nome do arquivo
FILE_NAME=$(basename $FILE_PATH)
echo "FILE_NAME: $FILE_NAME"
# nome do arquivo sem extensão
FILE_BASE_NAME="${FILE_NAME%.*}"
echo "FILE_BASE_NAME: $FILE_BASE_NAME"
# navega para o diretorio
cd $FILE_DIR
ORIGINAL_LINE_COUNT=`wc -l < $FILE_NAME`
# pega o cabeçalho do arquivo
HEADER=`head -n 1 $FILE_NAME`
echo "HEADER: $HEADER"
echo "ORIGINAL_LINE_COUNT: $ORIGINAL_LINE_COUNT"
# remove a primeira linha senao o primeiro split fica com dois cabeçalhos
sed '1d' $FILE_NAME > temp.tmp && mv temp.tmp $FILE_NAME
# faz o split usando o template do nome do arquivo
split -l $LINES_COUNT $FILE_NAME $FILE_BASE_NAME
# volta o header pro arquivo original
echo $HEADER | cat - $FILE_NAME > temp.tmp && mv temp.tmp $FILE_NAME
# renomeia o arquivo original e move pra pasta anterior
mv $FILE_NAME ../${FILE_NAME}.splitted
# renomeia os splits pra .TXT e acrescenta o header
for F in *
do
echo $F
echo $HEADER | cat - $F > temp.tmp && mv temp.tmp $F
mv $F $F.TXT
F=$F.TXT
echo "* file: $F"
LINE_COUNT=`wc -l < $F`
echo "* line count: $LINE_COUNT"
echo
done