elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  GNU/Linux (Moderador: MinusFour)
| | |-+  Como pasar varias carpetas o archivos por comandos en la terminal
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Como pasar varias carpetas o archivos por comandos en la terminal  (Leído 15,404 veces)
wilivarob

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Como pasar varias carpetas o archivos por comandos en la terminal
« Respuesta #10 en: 14 Junio 2017, 01:18 am »

el | sirve para pasar el standar output del lado izquierdo al standard input de la función de la derecha.....

Me acaba de dejar sin palabras, tendré que tener en cuenta el comando ahora que llegue a casa y ponerlo a prueba, me habían recomendado instalar midnight commander, pero la verdad pensé que al hacerlo por comandos no fuera tan extenso y peor aún saber programación, pero bueno nunca es tarde para aprender.....

Muchas gracias amigo


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como pasar varias carpetas o archivos por comandos en la terminal
« Respuesta #11 en: 14 Junio 2017, 01:24 am »

prueba por lo menos

imagina que tienes una carpeta done hay 5 archivos
Código:
ls
archivo1.x cosas.y hola1.x hola2.x hola3.x

si usas grep sin más argumentos te filtra de manera simple buscando cualquier coincidencia

Código:
ls | grep hola
hola1.x hola2.x hola3.x


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
wilivarob

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Como pasar varias carpetas o archivos por comandos en la terminal
« Respuesta #12 en: 14 Junio 2017, 04:25 am »

prueba por lo menos.....

Mi querido colega, te cuento que estoy muy sorprendido, eh echo lo del comando

Código:
cp -r /home/media/USB/*/


y efectivamente me paso todas las carpetas con sus archivos, pero me paso una carpeta que no queria que tiene el nombre de "Otros", asi que aplique la otra (aplique unos cambios menores, en vez de utilizar "mv" use "cp")...

Código:
ls -D /home/media/USB/ | grep -v -E "^Otros" | while read -r archivo; do cp -r "/home/media/USB/$archivo" /home/wilivarob/Documentos/; done

y vaya que si, solo que en este caso se pasaron archivos sueltos, creei que en esta sección

Código:
 grep -v -E "^Otros"

añadiendole el nombre del archivo suelto que no queria que pasara funcionara

Código:
 grep -v -E "^Otros" "^20170506.png"

pero salta error

"grep: ^20170506.png: No existe el fichero o el directorio"

Pero la verdad es lo que necesito, solo faltaria saber como ir añadiendo a ese comando lo que no quiero que pase.

NOTA: Eh estado haciendo unas pruebas y la unica que me funciono fue la siguiente, no se si exista algun metodo mas corto....

Código:
| grep -v -E "^Otros" | grep -v -E "^20170506.png" |

Ahora otra cosa que me quedo sonando y es que este comando

Código:
ls -D /home/media/USB/

la "-D", me deberia mostrar solo directorios (me imagino carpetas), y al aplicarlo me sale todo como si solo aplicara "ls", es como si "-D" no aplicara

« Última modificación: 14 Junio 2017, 04:49 am por wilivarob » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como pasar varias carpetas o archivos por comandos en la terminal
« Respuesta #13 en: 14 Junio 2017, 05:23 am »

no grep debes pasarle un solo argumento, si pasas un segundo es un archivo a leer... y es harina de otro saco

me equivoqué en algo... era
Código:
ls -d

el principio, con d minúscula

si quisieras coincidir multiples reglas en regex usas por ejempl

Código:
grep -v -E "^Otros|^20170506\.png"

tienes que usar backslash para todo simbolo (como el punto y especialmente el punto, si no quieres caos) y usas barra para separar las reglas
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
wilivarob

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Como pasar varias carpetas o archivos por comandos en la terminal
« Respuesta #14 en: 14 Junio 2017, 05:59 am »

no grep debes pasarle un solo argumento, si pasas un segundo es un archivo a leer... y es harina de otro saco.....

Bueno amigo acabo de hacer el proceso y te cuento lo siguiente, por un lado en cuanto a

Código:
ls -D
a
Código:
ls -d
es que el primero muestra todo y el segundo solo aparece un punto (.), o sea no hace lo que mencionaste.

Y en cuanto el codigo

Código:
grep -v -E "^Otros|^20170506\.png"
no se si te equivocaste pero le quite el "\" y lo unico que noto es que se tarda mas de lo que se demoro con el metodo que use yo...
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como pasar varias carpetas o archivos por comandos en la terminal
« Respuesta #15 en: 14 Junio 2017, 06:21 am »

disculpa... con ls -d tienes razón lo puse mal
Código:
ls -d /home/media/USB/*/

en este caso siempre debe llevar el */

sobre el \ si no lo colocas pasa que en regex el punto singifica "cualquier cosa" es decir

si buscas algo que empiece con c y termine con o y tenga cualquier cosa en el medio, usas

Código:
grep  -E "^c.*o$"

por eso debe llevar \


la sentencia correcta para sacar solo directorios exceptuando uno, debería ser

Código
  1. ls -d /home/media/USB/*/ | grep -v -E "^Otros" | while read -r archivo; do cp -r "$archivo" /home/wilivarob/Documentos/; done

esta si la probé y creo que va bien
« Última modificación: 14 Junio 2017, 06:26 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
wilivarob

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Como pasar varias carpetas o archivos por comandos en la terminal
« Respuesta #16 en: 14 Junio 2017, 20:06 pm »

disculpa... con ls -d tienes razón lo puse mal.....

Como esta querido colega, acabo de verificar el ultimo codigo y te cuento lo siguiente, la primera parte
Código:
ls -d /home/media/USB/*/
ahora si me muestra solo carpetas, al procesar todo el comando, los archivos sueltos no aparecen por ejemplo la imagen 20170506.png (esto debido a la primera parte de que solo muestre solo carpetas, hasta ahi todo perfecto), ahora en la parte
Código:
grep -v -E "^Otros"
, se supone que indica que la carpeta "Otros" no deberia pasar, pues aqui es donde ya empieza el error porque me la pasa, incluso vi que modificaste esta parte
Código:
do cp -r "$archivo" /home/wilivarob/Documentos/
le quitaste ""/home/media/USB/" que venia antes de "$archivo" y se lo puse a ver y nada aun....

Lo interesante es que el codigo pasa todas las carpetas sin los archivos sueltos y eso es bueno, pero y la carpeta "Otros" que no quiero???
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como pasar varias carpetas o archivos por comandos en la terminal
« Respuesta #17 en: 14 Junio 2017, 22:37 pm »

Código:
grep -v -E "^Otros"

coincide todo lo que no empiece por otros... si la palabra "Otros" no es con lo que empieze el nombre de archivo,  quitale el  ^ te recomiendo por lo menos leer lo basico de regex


si quieres cambia la parte de
Código:
do cp -r "$archivo" /home/wilivarob/Documentos/

por
Código:
do echo "$archivo"

así ves que le está pasando al cp sin andar dando tumbos de ciego
« Última modificación: 14 Junio 2017, 22:49 pm por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
wilivarob

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: Como pasar varias carpetas o archivos por comandos en la terminal
« Respuesta #18 en: 15 Junio 2017, 05:07 am »

Código:
grep -v -E "^Otros"

coincide todo lo que no empiece por otros...

Como estas colega, esta vez te escribo para agradecerte por el comando, esta vez funciono perfectamenta solo era quitar el "^" y solo poner el nombre de la carpeta, asi que muchas gracias, solo te menciono que qice ensañar sacando otra carpeta en este caso "Otros" y "5. Software" y en la parte

Código:
grep -v -E "^Otros"

Añadi como me lo mencionaste y enseñaste
Código:
grep -v -E "^Otros" | "5. Software

y no funciono incluso puse

"^5"
"5\. Software"
"Software"
"^Software"
Casi todas las combinaciones posibles y siempre me saltaba un error de "bash"
solo me funciono asi
Código:
grep -v -E "^Otros" | grep -v -E "5. Software"

De resto excelente exactamente era lo que necesitaba, muchas gracias y espero verte mas adelante, en estos dias publicare unos pequeños problemitas y espero en verdad me puedas ayudar a solucionarlo y pues nada muchas gracias.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como pasar varias carpetas o archivos por comandos en la terminal
« Respuesta #19 en: 15 Junio 2017, 05:15 am »

me cito

Citar
tienes que usar backslash para todo simbolo (como el punto y especialmente el punto, si no quieres caos) y usas barra para separar las reglas

el espacio es un simbolo (no es letra ni numero)

así que requiere backslash

usualmente se denomina por
Código:
\s

lee sobre regex y no des tumbos de ciego :¬¬ (me molesta personalmente)
Código:
grep -v -E "^Otros" | grep -v -E "5. Software"

te soy sincero y con este caso has tenido suerte XD pero solo sirve si excluyes... además el punto sustituyó el espacio...


regex en wikipedia tiene todo lo que necesites saber y mucho más

tambien esto te puede servir mucho
https://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Comandos y curiosidades en tu terminal
Noticias
wolfbcn 0 2,711 Último mensaje 19 Febrero 2011, 18:05 pm
por wolfbcn
Como pasar argumentos por linea de comandos en wxWidgets
Programación C/C++
Noxware 6 4,834 Último mensaje 3 Diciembre 2014, 09:00 am
por Eternal Idol
Como maximizar la terminal por comandos.
GNU/Linux
Todo-System. 1 2,175 Último mensaje 23 Julio 2015, 16:28 pm
por Slava_TZD
Como maximizar la terminal por comandos.
Scripting
Todo-System. 1 2,310 Último mensaje 21 Julio 2015, 03:33 am
por engel lex
Crear Varias carpetas y Sub-Carpetas
Scripting
P3NDULO 1 5,697 Último mensaje 23 Agosto 2019, 04:05 am
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines