
Tengo una carpeta Todo con
AllFolders
F1
some_file_20170315_xyz.txt
some_file_20170314_xyz.txt
....
F2
some_other_file_20170315_abc.txt
some_other_file_20170314_abc.txt
...
...
Fn
¿Cómo puedo copiar todos los archivos que coinciden con una fecha determinada en una carpeta vacía diferente para que la estructura de la carpeta también se copie y se vea así?
Folder_20170315
F1
some_file_20170315_xyz.txt
F2
some_other_file_20170315_abc.txt
Respuesta1
Una forma es utilizar find
y cp
:
find . -iname '*20170315*' -exec cp --parents {} /tmp/Folder_20170315 \;
La carpeta de destino ya debe existir. Si lo deseas, también puedes crear un script para su creación.
Parece que deseas verificar el nombre del archivo, pero find
también puedes usarlo para verificar la fecha del archivo.
Respuesta2
Como cp --parents
no está disponible en Mac, utilicé dos comandos para resolver un problema similar:
find . -name '*.example' | xargs -I FOO dirname FOO | xargs -I FOO mkdir -p /new/root/directory/FOO
find . -name '*.example' | xargs -I FOO cp FOO /new/root/directory/FOO
El primer comando crea el árbol de directorios. El segundo copia los archivos.
Esto supone que find
es rápido. Si find
se trata de un cuello de botella en el rendimiento, querrá optimizarlo aún más. Por ejemplo, podrías mover las operaciones a una función.