
Así que estuve mirando a mi alrededor y todo lo que encontré es cómo hacer esto solo si el directorio ya está creado, que es esto:
find source -name '*.z' -exec cp {} destination \;
Pero, ¿cómo puedo crear un nuevo directorio al que quiero enviar estos archivos con el mismo comando? Esto es lo que he probado pero sin éxito:
find source -name '*.z' -exec cp {} | mkdir newDirectory \;
Respuesta1
Una opción es utilizar el install
comando en lugar de cp
. Tiene una opción para crear todos los directorios principales.
find source -name '*.z' -exec install -D {} dest \;
Respuesta2
Túno puedo canalizar datosa mkdir
esa manera. Podrías hacer algo como esto:
find source -name '*.z' -exec sh -c 'mkdir -p newDirectory && cp "$@" newDirectory' _ {} +
o (asumiendo nombres de archivos que no contienen nuevas líneas)
find source -name '*.z' | while IFS= read -r foo; do
mkdir -p newDirectory;
cp "$foo" newDirectory;
done
o si solo deseas crear un directorio, para que el nombre sea siempre el mismo:
mkdir newDirectory; find source -name '*.z' -exec cp {} newDirectory \;