¿Cómo encontrar tipos de archivos específicos y tarlos?

¿Cómo encontrar tipos de archivos específicos y tarlos?

Parece que tengo un problema. Tengo algunos tipos de archivos diferentes en mi directorio actual y solo quieroalquitránel.pngarchivos. Empecé con esto:

find -name "*.png" | tar -cvf backupp.tar

No funcionaría porque no especificé qué archivos, así que viendo cómo lo hacían otros, agregué xargs:

find -name "*.png" | xargs tar -cvf backupp.tar

Esta vez funcionó y se creó el archivo backupp.tar, pero aquí está el problema. Parece que no puedo extraerlo. Cada vez que escribo:

tar -xvf backupp.tar

No pasa nada. Intenté cambiar chmod y sudo, pero nada cede.

Entonces, ¿escribí el comando completamente incorrecto o hay algo que me perdí?

Respuesta1

Cada uno de sus dos enfoques estuvo cerca de funcionar, pero cada uno tenía un problema distinto.

En su primer enfoque, intenta canalizar una lista de archivos a tar. Si desea tarleer la lista de archivos desde la entrada estándar, debe usar las opciones -T/ --files-fromy , por ejemplo-

find -name '*.png' -print0 | tar -cvf backup.tar --null -T - 

Para obtener una referencia, consulte la documentación oficial:

NOTA:El uso de las banderas -print0y --nulldebería garantizar que esto también maneje nombres de archivos que incluyan espacios en blanco.

En su segundo enfoque, intenta ejecutar tara través de xargs, pero está usando la opción "crear" ( --create/ -c). Si utiliza la opción "crear" con xargso en un bucle for, sobrescribirá el archivo después de cada iteración. En su lugar, intente utilizar la opción "añadir" ( -a/ --append) o la opción "actualizar" ( -u/ --update), por ejemplo:

find -name "*.png" -exec tar -uvf backupp.tar {} \;

Esto agregará archivos al archivo después de cada iteración en lugar de sobrescribirlo.

De cualquier manera, una vez que haya terminado, puede usar la opción "lista" ( --list/ -t) para ver el contenido del archivo y verificar que todo funcionó como se esperaba:

tar tf backupp.tar

Respuesta2

Simplemente puedes usar el comodín.

tar -cvf backup.tar *.png

o mediante el usofind

find -name "*.png" | tar -cvf backup.tar -T -

la -Topción obtiene el nombre del archivo de ARCHIVO que en este caso es stdin-

información relacionada