it-swarm-es.tech

¿Cómo puedo mover archivos por tipo de forma recursiva desde un directorio y sus subdirectorios a otro directorio?

¿Cuál sería una buena manera de mover un tipo de archivo desde un directorio y todos sus subdirectorios?

Como "mover todo * .ogg in/thisdir recursivamente a/somedir". Probé un par de cosas; mi mejor esfuerzo fue (todavía no tan bueno):

find /thisdir -type f -name '*.ogg' -exec mv /somedir {} \;

Regresó en cada línea antes de cada nombre de archivo,

mv: cannot overwrite non-directory `/thisdir/*.ogg' with directory `/somedir'
34
Steve Burdine

puedes usar find with xargs para esto

find /thisdir -type f -name "*.ogg" -print0 | xargs -0 -Imysongs mv -i mysongs /somedir

El -I en el comando anterior le dice a xargs qué cadena de reemplazo desea usar (de lo contrario, agrega los argumentos al final del comando).

OR
En su comando solo intente mover '{}' después del comando mv.

find /thisdir -type f -name '*.ogg' -exec mv -i {} /somedir \;

27
Hemant
find /thisdir -type f -name "*.ogg" -exec mv {} /somedir \;

Intercambiaste un poco los argumentos para mv

13
Coding District

En zsh o bash 4, para reunir todos *.ogg archivos en /somedir:

mv /thisdir/**/*.ogg /somedir

Si desea reproducir la jerarquía de directorios: (advertencia, escrita directamente en el navegador)

rsync -a --Prune-empty-dirs --include='*/' --include='*.ogg' --exclude='*' /thisdir /somedir