Procesamiento de espacios en variables declaradas por $(comandos)
Publicado por Raúl (5 intervenciones) el 22/06/2018 18:03:18
Buen día a todos.
¿Saben si hay forma de que al declarar una variable como output de un comando usando este -> $(), no separe los resultados por espacio y lo haga sólo por '\n'?
Les describo brevemente mi problema, estoy tratando de ordenar un montón de PDFs recuperados por photorec usando scripts, hasta el momento he realizado ordenamiento por metadatos y titulos que no sean de la forma f{número}.{extensión de archivo}, ahora para refinar mi ordenamiento estoy procesando los PDF mediante OCR, usando ocrmypdf y pdftotext, algo como lo que sigue
La cosa es que separa las palabras por espacios, y en caso de archivos que sean del tipo "este es mi archivo.pdf" tengo una variable por palabra en vez de una por archivo
Y no se me ocurre alguna forma de procesar de manera adecuada esos archivos. Espero me puedan dar algunos indicios para resolver mi problema, igual sigo googleando.
Saludos
PD Se que mi redacción para el final es redundante, me disculpo por ello
¿Saben si hay forma de que al declarar una variable como output de un comando usando este -> $(), no separe los resultados por espacio y lo haga sólo por '\n'?
Les describo brevemente mi problema, estoy tratando de ordenar un montón de PDFs recuperados por photorec usando scripts, hasta el momento he realizado ordenamiento por metadatos y titulos que no sean de la forma f{número}.{extensión de archivo}, ahora para refinar mi ordenamiento estoy procesando los PDF mediante OCR, usando ocrmypdf y pdftotext, algo como lo que sigue
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
#!/bin/bash/
# ------------------------------------
# Conseguimos el árbol del directorio,
# sólo sirve para archivos con nombres
# escritos sin espacios
files=$(ls | grep pdf)
declare -i counter
# Recorremos el output del comando
for file in $files
do
# Separamos el nombre para poder crear archivos "regulares"
name=$(echo $file | tr "." "\n")
counter=0
for i in $name
do
if [ $counter -eq 0 ]; then
baseName=$i
else
extension=$i
fi
counter=+1
done
scannedName="scann"$file
textName=$basename".txt"
# Ahora procesamos OCR
ocrmypdf $file $scannedName
# Si el PDF ya es OCR entonnces no existe
# mi archivo, y proceso para TXT al original
if ls $scannedName; then
pdftotext $scannedName $textName
else
pdftotext $file $textName
fi
La cosa es que
1
$(command)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Input:
# archivo1.pdf
# archivo2.pdf
# archivo3.pdf
# mi archivo 4.pdf
files=$(ls | grep pdf)
#output:
# archivo1.pdf
# archivo2.pdf
# archivo3.pdf
# mi
# archivo
# 4.pdf
Y no se me ocurre alguna forma de procesar de manera adecuada esos archivos. Espero me puedan dar algunos indicios para resolver mi problema, igual sigo googleando.
Saludos
PD Se que mi redacción para el final es redundante, me disculpo por ello
Valora esta pregunta


0