En la línea de comandos de Linux, me gustaría copiar un conjunto (muy grande) de .txt
archivos de un directorio (y sus subdirectorios) a otro.
Necesito que la estructura del directorio permanezca intacta, y tengo que ignorar los archivos, excepto los que terminan en .txt
.
Respuestas:
Puedes usar find y cpio para hacer esto
fuente
fuente
.
despuésfind
. También en macOS 10.13.1, esto funcionó:find . -type f -name "*.txt" -exec install -v {} /dest/path/{} \;
Otro enfoque
find . -name '*.txt' -exec rsync -R {} path/to/dext \;
fuente
find . -iname '*.txt' -exec rsync -Rptgon {} path/to/dext \;
hacer una coincidencia entre mayúsculas y minúsculas y preservar la propiedad y los permisos.La forma más fácil que funcionó para mí:
Una trampa es que tiene que navegar al directorio "deseado" antes para que la "ruta principal" sea correcta.
También asegúrate de haber habilitado los globos recursivos en bash:
fuente
¿qué tal si primero lo copia con
luego ve a la nueva carpeta y ejecuta
o solo
Editar: ok, quieres un comando que filtre (¡no lo he probado porque mi sistema no tiene el
cpio
comando!). Aquí es donde lo encontré: http://www.gnu.org/software/findutils/manual/html_mono/find.html#Copying-A-Subset-of-FilesPor favor, probar primero esto, porque no he probado todavía. Si alguien verificara, eso sería genial.
fuente
0
en-pmd0
y añadir-print0
al final delfind
comando (justo antes de la|
).Intenté hacer lo mismo en macOS, pero ninguna de las opciones realmente funcionó para mí. Hasta que lo descubrí
ditto
.Tuve que copiar muchos archivos .wav y hacer que omita los archivos de video ... Así que esto es lo que se me ocurrió:
find . -type f -iname "*.wav" -ls -exec ditto {} /destination/folder/{} \;
find .
- Ejecuta buscar en la carpeta actual. asegúrese de hacerlocd /source/folder
antes de comenzar-type f
- Especifica solo buscar archivos-iname "*.wav"
- Esto le dice que busque mayúsculas y minúsculas * .wav-ls
- Esto le muestra el archivo en el que está trabajando. De lo contrario, no muestra nada.-exec ditto {} /destination/folder/{} \;
- Hace todo el trabajo de copiar y crear los archivos con el mismo árbol de directorios.fuente
Navegue al directorio:
Es un poco más directo y poderoso, si manejas expresiones regulares.
fuente
Navegue al directorio:
Tendrá que navegar a cada carpeta en el directorio, pero esto es mejor que la mayoría de las opciones que he visto hasta ahora.
fuente