¿Cómo copiar solo los archivos normales en un directorio (ignorando los subdirectorios y enlaces) al mismo destino? (Bash en Linux) Un número muy grande de archivos¿Cómo hacer una lista de archivos en el directorio usando bash?
21
A
Respuesta
36
for file in /source/directory/*
do
if [[ -f $file ]]; then
#copy stuff ....
fi
done
20
Para listar los archivos normales en /my/sourcedir/
, sin mirar de forma recursiva en subdirectorios:
find /my/sourcedir/ -type f -maxdepth 1
Para copiar estos archivos a /my/destination/
:
find /my/sourcedir/ -type f -maxdepth 1 -exec cp {} /my/destination/ \;
7
Para expandir en poplitea's answer, no tiene que ejecutar cp para cada archivo: u SE xargs
para copiar varios archivos a la vez:
find /my/sourcedir -maxdepth 1 -type f -print0 | xargs -0 cp -t /my/destination
o
find /my/sourcedir -maxdepth 1 -type f -exec cp -t /my/destination '{}' +
+0
'-exec ... +' es la solución más eficiente; Una cosa que vale la pena mencionar: 'cp -t' es una extensión _GNU_. – mklement0
Cuestiones relacionadas
- 1. ¿Cómo hacer una lista de archivos usando dos comandos?
- 2. ¿Cómo hacer una lista de archivos versionados en git?
- 3. ¿Cómo hacer una lista de archivos en un directorio de Android?
- 4. ¿Cómo puedo hacer una lista de todos los archivos en un directorio con Perl?
- 5. ¿Cómo combino un directorio en otro usando Bash?
- 6. Cómo generar una lista de directorio html usando Python
- 7. Tratando de conseguir una lista de archivos en un directorio por fecha creada usando LINQ
- 8. Cómo encontrar solo archivos en un directorio determinado, e ignorar los subdirectorios usando bash
- 9. ¿Cómo hacer algo con cada archivo en un directorio usando bash?
- 10. lista de PHP todos los archivos en el directorio
- 11. Hacer del título de un directorio la fecha en bash?
- 12. ¿Cómo puedo probar si existe una lista de archivos?
- 13. Cómo copiar varios archivos desde un directorio diferente usando cp?
- 14. Bash: cat archivos múltiples de la lista de archivos
- 15. OutOfMemory cuando lista archivos en un directorio
- 16. Usando el resultado de un comando como argumento en bash?
- 17. Fusionar todos los archivos de un directorio en uno usando bash
- 18. ¿Cómo puedo seleccionar los archivos aleatorios de un directorio en bash?
- 19. Bash Shell archivos de lista utilizando bucle "for"
- 20. Usando SAS Macro para canalizar una lista de nombres de archivos desde un directorio de Windows
- 21. ¿Cómo copio archivos en otro directorio usando MSBuild?
- 22. Copia de archivos desde un directorio en un directorio existente
- 23. Salir de una carpeta usando Git Bash
- 24. ¿Cómo se obtiene una lista de directorio en C?
- 25. Linux: busque una palabra en particular en una lista de archivos bajo un directorio
- 26. cómo hacer que los archivos cuenten en un directorio usando ruby
- 27. Establezca una variable bash cada vez que cambie el directorio
- 28. recibiendo el padre de un directorio en el Bash
- 29. ¿Cómo hacer referencia al directorio actual desde .htaccess usando mod_rewrite?
- 30. Cómo hacer exponenciación en bash
Esto no funcionará para gran número de archivos debido a la limitación de la expansión shell – holygeek
También no respetar los archivos con espacios en blanco en el nombre. –
@holygeek: No, globbing (expansión del nombre de ruta) no está sujeto al máximo de 'ARG_MAX'. limitación de la longitud de la línea de comandos, porque no hay ninguna utilidad externa involucrada. Dicho esto, cualquier bucle con una gran cantidad de iteraciones en Bash será _slow_. – mklement0