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 -da grep, luego empalmarlo en el tarcomando 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 --includeparámetro.

--ignore-failed-readopción?Respuestas:
puedes probar
dónde
cpara crearf ar.tarespecificar 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
-eopción de readlink canonicalizará los nombres de archivo existentes e ignorará silenciosamente cualquier otro.fuente
--strip-componentsextraigo.Utilizar
Explicación
findhace recursividad.-osoportes para-or. Así que arriba significa buscar este comodín O este. Si solo tiene un patrón, no es necesario-o.fuente