ver varios una todos subdirectorios otro mover los listar funciones directorios directorio crear copiar contenido consola carpeta borrar archivos archivo linux tar

linux - varios - ¿Cómo atacar ciertos tipos de archivos en todos los subdirectorios?



mover varios archivos en linux (6)

Esto manejará rutas con espacios:

find ./ -type f -name "*.php" -o -name "*.html" -exec tar uvf myarchives.tar {} +

Quiero tar y todos los archivos .php y .html en un directorio y sus subdirectorios. Si uso

tar -cf my_archive *

ataca todos los archivos, lo que no quiero. Si uso

tar -cf my_archive *.php *.html

ignora los subdirectorios. ¿Cómo puedo convertir el tar de forma recursiva pero incluir solo dos tipos de archivos?


Póngalos en un archivo

find . /( -name "*.php" -o -name "*.html" /) -print > files.txt

Luego use el archivo como entrada para tar, use -I o -T dependiendo de la versión de tar que use

Use h para copiar enlaces simbólicos

tar cfh my.tar -I files.txt


Para comprimir varios archivos con diferentes patrones, podríamos separarlos con espacio y agregarlos al archivo gz, así:

tar -czvf deploy.tar.gz **/Alice*.yml **/Bob*.json

esto agregará todos los archivos .yml que comiencen con Alice desde cualquier subdirectorio y agregará todos los archivos .json que comiencen con Bob desde cualquier subdirectorio.


Un método es:

tar -cf my_archive.tar $( find -name "*.php" -or -name "*.html" )

Sin embargo, hay algunas advertencias con este método:

  1. Fallará si hay archivos o directorios con espacios en ellos, y
  2. fallará si hay tantos archivos que la longitud máxima de la línea de comandos está llena.

Una solución a esto podría ser generar los contenidos del comando find en un archivo y luego usar la opción "-T, --files-from FILE" para tar.


find ./someDir -name "*.php" -o -name "*.html" | tar -cf my_archive -T -


tar -cf my_archive `find ./ | grep ''.php/|.html''`

Use "buscar" y "grep" para obtener toda la ruta de los archivos .php y .html en todo el directorio y sus subdirectorios. Luego pasa esa información de ruta a tar para comprimir.

Tenga cuidado con esos símbolos `y ''. Tenga en cuenta también que esto llegará al límite de la cantidad de caracteres que su caparazón permitirá en la línea de comandos, a diferencia de algunas de las otras respuestas.