Deseamos regalarte la mejor respuesta que hallamos en todo internet. Nosotros deseamos que te resulte útil y si puedes comentarnos alguna mejora hazlo con total libertad.
Solución:
Si ha instalado Git para Windows, debe tener instalado Git Bash, ya que viene con Git.
Utilizar el split
comando en Git Bash para dividir un archivo:
-
en archivos de 500 MB cada uno:
split myLargeFile.txt -b 500m
-
en archivos con 10000 líneas cada uno:
split myLargeFile.txt -l 10000
Consejos:
-
Si no tiene Git/Git Bash, descárguelo en https://git-scm.com/download
-
Si perdiste el acceso directo a Git Bash, puedes ejecutarlo usando
C:Program FilesGitgit-bash.exe
¡Eso es todo!
Aunque siempre me gustan los ejemplos…
Ejemplo:
Puede ver en esta imagen que los archivos generados por split
son llamados xaa
, xab
, xac
etc.
Estos nombres están formados por prefix y un sufijo, que puede especificar. Como no especifiqué lo que quiero, el prefix o sufijo para parecerse, el prefix predeterminado a x
y el sufijo predeterminado es una enumeración alfabética de dos caracteres.
Otro ejemplo:
Este ejemplo demuestra
- usando un nombre de archivo prefix de
MySlice
(en lugar del predeterminadox
), - la
-d
bandera para usar sufijos numéricos (en lugar deaa
,ab
,ac
etc…), - y la opción
-a 5
para decirle quiero que los sufijos sean de 5 dígitos:
Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout
Set rs = CreateObject("ADODB.Recordset")
With rs
.Fields.Append "LineNumber", 4
.Fields.Append "Txt", 201, 5000
.Open
LineCount = 0
Do Until Inp.AtEndOfStream
LineCount = LineCount + 1
.AddNew
.Fields("LineNumber").value = LineCount
.Fields("Txt").value = Inp.readline
.UpDate
Loop
.Sort = "LineNumber ASC"
If LCase(Arg(1)) = "t" then
If LCase(Arg(2)) = "i" then
.filter = "LineNumber < " & LCase(Arg(3)) + 1
ElseIf LCase(Arg(2)) = "x" then
.filter = "LineNumber > " & LCase(Arg(3))
End If
ElseIf LCase(Arg(1)) = "b" then
If LCase(Arg(2)) = "i" then
.filter = "LineNumber > " & LineCount - LCase(Arg(3))
ElseIf LCase(Arg(2)) = "x" then
.filter = "LineNumber < " & LineCount - LCase(Arg(3)) + 1
End If
End If
Do While not .EOF
Outp.writeline .Fields("Txt").Value
.MoveNext
Loop
End With
Cortar
filter cut b i NumOfLines
Corta el número de líneas desde la parte superior o inferior del archivo.
t - top of the file
b - bottom of the file
i - include n lines
x - exclude n lines
Ejemplo
cscript /nologo filter.vbs cut t i 5 < "%systemroot%win.ini"
Otra forma Esto genera líneas 5001+, adapte para su uso. Esto casi no usa memoria.
Do Until Inp.AtEndOfStream
Count = Count + 1
If count > 5000 then
OutP.WriteLine Inp.Readline
End If
Loop
Si para ti ha sido útil este post, agradeceríamos que lo compartas con más desarrolladores y nos ayudes a extender este contenido.