En realidad eso no encontraría los .txt que estén en subdirectorios.
Si la idea es moverlos todos al mismo lugar, lo siguiente es equivalente:
Código BASH:
Ver original# para bash 4.x
shopt -s globstar
mv **/*.txt destino/
# para cualquier sistema donde "find" esté disponible
find . -name "*.txt" -exec mv {} destino/ \;
Si la idea es preservar la estructura de directorios, probablemente haya algo mejor pero mi "fórmula" es usar algo como lo siguiente:
Código BASH:
Ver originalfind . -name "*.txt" -exec -exec bash -c '
for FILE in "$0" "$@"; do
mkdir -p destino/"$(dirname "$FILE")"
mv -v -- "$FILE" "destino/$FILE"
done
' {} +