unix - todos - mover varios archivos en linux
¿Cómo mover o copiar los archivos listados por el comando ''buscar'' en Unix? (5)
Tengo una lista de ciertos archivos que veo usando el siguiente comando, pero ¿cómo puedo copiar esos archivos enumerados en otra carpeta, digamos ~ / test?
find . -mtime 1 -exec du -hc {} +
Agregando a la respuesta de Eric Jablow, aquí hay una posible solución (funcionó para mí - linux mint 14 / nadia)
find /path/to/search/ -type f -name "glob-to-find-files" | xargs cp -t /target/path/
También puede consultar " ¿Cómo puedo usar xargs para copiar archivos que tienen espacios y comillas en sus nombres? ".
En realidad, puede procesar el resultado del comando de find
en un comando de copia de dos maneras:
Si la salida del comando
find
no contiene ningún espacio, es decir, si el nombre del archivo no contiene un espacio, puede usar:Syntax: find <Path> <Conditions> | xargs cp -t <copy file path> Example: find -mtime -1 -type f | xargs cp -t inner/
Pero nuestros archivos de datos de producción pueden contener espacios, por lo que la mayoría de las veces este comando es efectivo:
Syntax: find <path> <condition> -exec cp ''{}'' <copy path> /; Example find -mtime -1 -type f -exec cp ''{}'' inner/ /;
En el segundo ejemplo, la última parte, el punto y coma también se considera parte del comando de find
, y debe escaparse antes de presionar Enter . De lo contrario, obtendrá un error como:
find: missing argument to `-exec''
Si está utilizando GNU find,
find . -mtime 1 -exec cp -t ~/test/ {} +
Esto funciona tan bien como conectar la salida en xargs
mientras se evitan las trampas de hacerlo (maneja espacios incrustados y saltos de línea sin tener que usar find ... -print0 | xargs -0 ...
).
mueve los archivos encontrados hasta un directorio relativo a su directorio actual (no su directorio actual)
find . -path "*/yourfolder/*" -type f -execdir mv {} .. /;
find /PATH/TO/YOUR/FILES -name NAME.EXT -exec cp -rfp {} /DST_DIR /;