[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Comandos no funcionan con miles de archivos



2016-02-14 21:06 GMT+01:00 Debia Linux <debianeromx@gmail.com>:
> 2016-02-14 13:54 GMT-06:00 Jose Maldonado <josemald89@gmail.com>:
>> El 14/02/2016 a las 14:14, Debia Linux escribió:
>>> Listeros.
>>>
>>> Buenos dias tengan todos ustedes en este dia del Amor y la Amistad.
>>>
>>> Les comento que tengo una carpeta con 111 mil archivos
>>> aproximadamente. Intento copiar algunos con el comando de siempre:
>>>
>>> cp *.jpg ~/imagenes/
>>> cp: opción inválida -- '3'
>>> Pruebe 'cp --help' para más información.
>>>
>>> Esto me esta sucediendo con varios comandos, me esta arrojando
>>> mensajes similares. Supongo que es por el exceso de archivos.
>>>
>>> ¿Algun comentario?.
>>>
>>> Gracias
>>>
>>> Debianeromx
>>>
>>
>> Si lo hacer así
>>
>> cp ./*.jpg /path/to/copy
>
> De hecho ya no hay problema con el archivo que comenzaba con (&) o en
> su defecto con (-) lo que ahora es problema es:
>
> bash: /bin/cp: La lista de argumentos es demasiado larga

Puedes ver las discusiones que ha habido desde hace mucho por este error:
http://unix.stackexchange.com/questions/10026/how-can-i-best-copy-large-numbers-of-small-files-over-scp

Me gusta la solución que dan en:
http://mywiki.wooledge.org/BashFAQ/095

Para este caso sería algo así:

files=(*jpg)
 for ((i=0; i<${#files[*]}; i+=100)); do
   cp -- "${files[@]:i:100}" ~/imagenes
 done

La otra opción es jugar con xargs, pero es más ineficiente:

find . -maxdepth 1 -type f -name "*jpg" -print0 | xargs --null -I "{}"
cp -- "{}" ~/imagenes

Saludos


Reply to: