Propiedades: X archivos, X subcarpetas ¿cosas distintas? [Solucionado]

(A Sidd y a Slanor)
Creo que ambas soluciones funcionan... aunque ignoro la diferencia entre ambas.
Pero hay un problema, con la solución de Slanor, me explico:

He creado una carpeta 'eBooks', más manejable, que solo contiene 3 "carpetas de iniciales" (X,con 2 autores; Y,con 8 autores; Z, con 2 autores) y que, en total, contienen 14 libros .epub

Ahora, veamos lo que me ocurre con la solución de Slanor:

~$ find ./eBooks -name *.epub | wc -l
0
~$ cd eBooks
~/eBooks$ find -name *.epub | wc -l
14

Es decir, que en mi sistema, la solución de Slanor, parece haber un problema de enrutamiento...(solo funciona desde dentro de la carpeta eBooks)

Ahora, volvamos a raíz, y probemos ambas:

~/eBooks$ cd ..
~$ find ./eBooks/ -type f | grep -i ".epub" | wc -l
14
~$ find ./eBooks/ -name *.epub | wc -l
0

Vemos que, desde raiz, solo funciona la de Sidd..
Y, si nos resituamos en la carpeta eBooks, comprobamos que lo de Sidd, también funciona:

~$ cd eBooks
~/eBooks$ find -type f | grep -i ".epub" | wc -l
14
~/eBooks$

Es decir: la solución de Slanor no me funciona si no me sitúo en la carpeta eBooks ¿hay un problema de enrutamiento?

Como observo que en la de Sidd hay una / posterior a eBooks, me vuelvo a raiz e intento la de Slanor con esa / posterior..¡pero sigue sin funcionar:

~/eBooks$ cd ..
~$ find ./eBooks/ -name *.epub | wc -l
0
~$

Supongo que esto tendrá alguna explicación...

Ah! Según Propiedades de Dolphin, 'eBooks' contiene 14 archivos, 15 subcarpetas (las 12 de autores + las 3 de iniciales). En todo caso, tengo que probar ambas incorporando algunos archivos que no sean .epub, y alguno oculto (por cierto, necesitaré que me digáis como crear un archivo oculto)

A Slanor: no puedo comprobar esto con mi Calibre, porque está configurado con otra carpeta ('Biblioteca de Calibre'), que es la que uso con mi Kindle; mi carpeta LIBROS pretende ser una especie de almacén más general (y, precisamente por eso puse el otro post, que tú solucionaste, para sacar un listado) donde quiero trasladar, precisamente, todos los libros, y dejar que 'Biblioteca de Calibre' solo contenga lo mismo que mi Kindle.

Pero mira... ya puestos, se me ha ocurrido contar los .epub en la carpeta 'Biblioteca de Calibre' con ambas soluciones...¡Y da distintos resultados!, mira:

~/Biblioteca de calibre$ find -name *.epub | wc -l
3078
~/Biblioteca de calibre$ find -type f | grep -i ".epub" | wc -l
3133

¿Hay explicación? (creo que me he metido en un lío... jajaja)

Un saludo

Hola Albertodelaxe, he probado mi sistema con la barra final y sin ella y funciona, debe ser alguna opción específica en Debian, ya lo inverstigaré:

ricky@Mele-magthere:~$ pwd
/home/ricky
ricky@Mele-magthere:~$ find ./pruebas_bash/ -name *.epub | wc -l
7
ricky@Mele-magthere:~$ find ./pruebas_bash -name *.epub | wc -l
7

Y la opción de siddharta a mi me funciona igual que la mía:

find -type f | grep -i ".epub" | wc -l
7

Otra cosa a investigar, pero creo que es cosa de debian de nuevo tendre que meterlo en una máquina virtual para probar.

Y por último crear archivos ocultos en linux es la cosa más complicada que he visto nunca en el mundo de la informática, hay que ponerle un . delante del nombre jajaja. Complicadísimo, no te esperabas una solución tan simple verdad jajaja.

Salu2

¿Ponerle un . delante del nombre, dices?
Mmmm... no se si seré capaz, jajaja confuso

Aunque en realidad, creo que está resuelto -y con dos soluciones- dejaré abierto el tema, hasta que hagas tus pruebas con Debian... y yo pruebe a intentar lo de los ocultos, a ver si tengo tiempo: eso de ponerle un . delante del nombre, debe llevarse su tiempo... smash

Un saludo, y muchas gracias

Buenas de nuevo, siento decirte que o tienes un debian un poco raro o que algo estabas poniendo mal en los comandos, he creado una estructura de biblioteca similar en debian y tanto mi script como el de Siddharta funcionan correctamente y dan el mismo resultado, el mio lo he probado desde dentro de la carpeta ebooks y desde fuera y funciona de ambas formas.

Un saludo

@slanor: soy yo quien usa Debian sin KDE y Alberto es quien usa Kubuntu, por eso hice pruebas en una máquina virtual mía con Debian+KDE.

Es mejor poner el texto a buscar entre comillas, porque de lo contrario el intérprete de comandos "expande" el asterisco y genera errores:

$ find ./books/ -name *.pdf | wc -l
find: paths must precede expression: Discurso de Inauguración de la Universidad Nacional, por Justo Sierra.pdf
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
0

Si se usan las comillas se evita el error:

$ find ./books/ -name "*.pdf" | wc -l
52

Sugiero usar el parámetro -iname en vez de -name, ya que el primero ignora si la expresión a buscar tiene mayúsculas/minúsculas. La búsqueda con -name me devolvió 52, mientras que con -iname me devolvió 53 (debo tener por ahí algún archivo cuya extensión no está completamente en minúsculas):

$ find ./books/ -iname "*.pdf" | wc -l
53

@Alberto: en mis comandos aparece la barra / al final del nombre del directorio porque he presionado la tecla TAB tras escribir las primeras letras de dicho nombre, haciendo que el sistema detecte y autocomplete lo que estoy escribiendo. Es indistinto si tú escribes la barra o no; yo ya me he acostumbrado a usarla porque así sé que me estoy refiriendo a un directorio y no a un archivo.

Para crear un archivo oculto basta agregar un punto al inicio del nombre, como ya lo indicó slanor:

$ touch .nombre.extension

y posteriormente lo editas con nano, emacs, vim, o el editor en terminal de tu preferencia; o Kate, Kwrite, OpenOffice, LibreOffice, o el editor gráfico de tu preferencia.

Para ocultar un archivo que ya existe:

$ mv nombre.extension .nombre.extension

Para "desocultarlo" basta invertir el proceso, quitando el punto inicial. Por supuesto si usas algún editor gráfico como Kate o Kwrite entonces le das "Guardar como ..." y le agregas/quitas el punto al nombre del archivo.

Saludos,
Sidd.

slanor escribió:

Buenas de nuevo, siento decirte que o tienes un debian un poco raro o que algo estabas poniendo mal en los comandos, he creado una estructura de biblioteca similar en debian y tanto mi script como el de Siddharta funcionan correctamente y dan el mismo resultado, el mio lo he probado desde dentro de la carpeta ebooks y desde fuera y funciona de ambas formas.
Un saludo

Seguro que sabrás decirme la instrucción-konsole para averiguar que versión de Debian uso yo ¿true/false?

Un saludo

@sidd Parece que me lie con las distros de cada uno, por eso no me cuadraba las imagenes que alberto ponía del dolphin. Creo que lo que me lió fue cuando comentó lo del gedit para crear el script.

Un saludo

@albertodelaxe Hola de nuevo la instrucción que comentas es como puedes ver en la imagen del debian uname -a
y posiblemente el error de mi script en tus pruebas se arregle como bien dice sidd con las comillas.

Un saludo

(Para seguir en lo posible el modelo de Sidd, he renombrado la carpeta de pruebas 'eBooks>>books)

Y parece que lo de las comillas, efectivamente, era importante... pero, en mi caso,... ¿para que enrute bien la orden?:

~$ find ./books -iname *.epub | wc -l
0
~$ find ./books -iname "*.epub" | wc -l
14

Y, en cuanto a -iname/-name, he alterado un .epub por un .EPUB y, efectivamente, es mejor usar -iname:

~$ find ./books -iname "*.epub" | wc -l
14
~$ find ./books -name "*.epub" | wc -l
13

Salu2, Alberto

Hechas las oportunas comprobaciones...

1.º Hay que descartar lo de Dolphin/Archivo/Propiedades ya que por esta vía, entran en el cómputo todo tipo de archivos, incluso los ocultos

2.º Pueden usarse cualquiera de estas dos soluciones (ambas válidas)

find ./books -iname "*.epub" | wc -l
find ./books/ -type f | grep -i ".epub" | wc -l

Haciendo en todo caso la salvedad de que, para el caso concreto de contar los libros de una biblioteca de eBooks, habría que repetir la solución con otros posibles formatos: .pdf, .mobi, etc.

Un saludo, Alberto

Hola Alberto el comando que has puesto

Albertodelaxe escribió:

$ find ./books -name "*.epub" | wc -l
13

es el que te había indicado yo pero con las comillas, entonces parece que el enrutamiento te lo está solucionando, la expansión del * afecta en la estructura de directorios que has crado tu y no en la que creé yo, posiblemente la creamos de distinta manera (es lo maravilloso de linux que hay muchas formas de hacer cada cosa jajaja).

Lo el uso del iname, que indicada Sidd, es importante en la medida que no te interese diferencias mayúsculas y minúsculas, en mi biblioteca de prueba no era necesario por eso ni me acordé de la posibilidad de su uso. Gracias Sidd por el recordatorio.

El uso de las comillas con el * afecto según el manual de BASH en lo siguiente:

*      Expands  to  the  positional  parameters, starting from one.  When the expansion
              occurs within double quotes, it expands to a single word with the value of  each
              parameter  separated  by  the first character of the IFS special variable.  That
              is, "$*" is equivalent to "$1c$2c...", where c is the  first  character  of  the
              value  of  the  IFS  variable.  If IFS is unset, the parameters are separated by
              spaces.  If IFS is null, the parameters are joined without  intervening  separa‐
              tors.

Que traducido a groso modo vendría a decir:

* Se expande a los parámetros posicionales, empezando por uno. Cuando la expansión
               ocurre dentro de comillas dobles, se expande a una sola palabra con el valor de cada
               parámetro separado por el primer carácter de la variable especial IFS.
               Es decir, "$*" es equivalente a "$ 1c $ 2c ...", donde c es el primer carácter de la
               valor de la variable IFS. Si IFS no está definida, los parámetros están separados por
               espacios. Si IFS es nulo, los parámetros se unen sin intervenir separadores.

Un saludo