¿Por qué lo siguiente no copia los archivos a la carpeta de destino?
# find /home/shantanu/processed/ -name '*2011*.xml' -exec cp /home/shantanu/tosend {} \;
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
\;
?find -iname '*.mp3' -mtime -1 -exec cp {} /home/my_path/ \;
¿Hay algo malo con este comando? no está funcionandoMe enfrenté a un problema como este ...
En realidad, de dos maneras puede procesar la
find
salida delcopy
comando en el comandoSi
find
la salida del comando no contiene ningún espacio, es decir, si el nombre del archivo no contiene espacio, puede usar el comando mencionado a continuación:Sintaxis:
find <Path> <Conditions> | xargs cp -t <copy file path>
Ejemplo:
find -mtime -1 -type f | xargs cp -t inner/
Pero la mayoría de las veces nuestros archivos de datos de producción pueden contener espacio. Entonces, la mayoría de las veces el comando mencionado a continuación es más seguro:
Sintaxis:
find <path> <condition> -exec cp '{}' <copy path> \;
Ejemplo
find -mtime -1 -type f -exec cp '{}' inner/ \;
En el segundo ejemplo, la última parte, es decir, el punto y coma, también se considera parte del
find
comando, que se debe escapar antes de presionar el botón Intro. De lo contrario, obtendrá un error similar a esteEn su caso, la sintaxis del comando copiar es incorrecta para copiar el archivo de búsqueda en
/home/shantanu/tosend
. El siguiente comando funcionará:fuente
find
/xargs
,find <Path> <Conditions> -print0 | xargs -0 -r cp -t <copy file path>
. Ejemplo:find -mtime -1 -type f -print0 | xargs -r0 cp -t inner/
Debe usarlo
cp -t /home/shantanu/tosend
para decirle que el argumento es el directorio de destino y no una fuente. Luego puede cambiarlo a-exec ... +
para podercp
copiar tantos archivos como sea posible a la vez.fuente
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp --target-directory=/home/shantanu/tosend {} \;
fuente
La razón de ese error es que está intentando copiar una carpeta que requiere la opción -r también para cp Gracias
fuente