Estoy ejecutando un comando de un script como
tar -c -f ar.tar a b c d
donde b, cyd pueden no existir, y pueden ser directorios. Las soluciones que se me ocurrieron son canalizar la salida de ls -d
a grep
, luego empalmarlo en el tar
comando o activar globos extendidos para @(a|b|c|d)
.
¿Hay una manera más ordenada de hacer esto? Estoy en Debian Wheezy, que no parece tener un --include
parámetro.
--ignore-failed-read
opción?Respuestas:
puedes probar
dónde
c
para crearf ar.tar
especificar archivo tar$(ls a b c d)
enumerará a stdin qué archivo está realmente presente (y dará error para otro)fuente
tar cf ar.tar $(ls -d a b c d 2>/dev/null)
funciona perfectamente ... pero creo que es más limpio con extglobextglob
, estoy usando el código en mi comentario anteriorSi está bien tener la ruta completa de los archivos en el archivo tar, puede hacer:
La
-e
opción de readlink canonicalizará los nombres de archivo existentes e ignorará silenciosamente cualquier otro.fuente
--strip-components
extraigo.Utilizar
Explicación
find
hace recursividad.-o
soportes para-or
. Así que arriba significa buscar este comodín O este. Si solo tiene un patrón, no es necesario-o
.fuente