Tengo una lista de archivos que necesito tar. Normalmente, usaría
tar -cvf allfiles.tar -T mylist.txt
Pero descubrí que los archivos que necesito están dispersos en subdirectorios y mi lista solo tiene los nombres de los archivos, no las rutas.
¿Hay alguna manera de combinar "buscar" con el comando tar para buscar los archivos en mi lista dondequiera que estén archivados en subdirectorios?
Respuesta1
Puede encontrar las rutas usando su lista de nombres y find
, pero puede verse atrapado en un pequeño caso de esquina, dado que tiene los archivos con el mismo nombre en diferentes directorios.
Si realmente no importa, puedes hacer lo siguiente:
find <main_directory> | grep -f mylist.txt
Y luego, usa la lista a tu tar
disposición. El comando completo puede verse así:
tar cvf allfiles.tar -T <(find <main_directory> |
grep -f mylist.txt --color=never)
notartedebeuse --color=never
; de lo contrario, si los colores están activos para su grep, estaría enviando entradas no válidas para tar
.
Para ignorar distinciones de casos, en este caso, en grep
, cuál es el que realmentefiltraciónarchivos, simplemente puede agregar la bandera -i
:
tar cvf allfiles.tar -T <(find <main_directory> |
grep -i -f mylist.txt --color=never)