Encuentre todos los archivos tar.gz y muévalos a un directorio de un nivel inferior

Encuentre todos los archivos tar.gz y muévalos a un directorio de un nivel inferior

Tengo archivos tar.gz accesibles desde

./parent/subfolder/tar_file_folder/*tar.gz

Y quiero encontrarlos y moverlos al directorio ./parent/, por lo tanto, un nivel más arriba. Sin embargo, hay varias subcarpetas y tar_file_folders. Por lo tanto, quiero llamar a mi comando desde las carpetas principales.

He probado esta línea de comando:

cd ./parent

find -name '*.tar.gz' -exec mv {} /path/to/single/target/directory \;

Sin embargo, no estoy muy seguro de cómo especificar la ruta a un nivel superior. ¿Alguna ayuda?

Dos ejemplos de ruta donde, en este caso, los archivos tar deben moverse a la carpeta ./AU-ASM o a la carpeta ./AR-Vir/:

./AU-ASM/[email protected]/LT51030752011211-SC20161014133947.tar.gz

./AR-Vir/[email protected]/LT51030751995263-SC20161014133510.tar.gz’

Y este es un ejemplo de dónde se almacenan los archivos tar.gz:

./Landsat_Data/AR-Vir/[email protected]/*tar.gz

La línea de comando debe ejecutarse desde el directorio ./Landsat_Data/

Respuesta1

Podrías iterar sobre archivos tar y moverlos al directorio principal '..', así:

for tar in $(find path -name '*.tar.gz'); do mv $tar $(dirname $tar)/..; done

información relacionada