¿Qué pasa si dejamos que find maneje los nombres de los archivos?
find . -maxdepth 1 -iname '*syed*' -exec du -ch {} +
¿Qué tal esto?:
find . -maxdepth 1 -iname '*syed*' -print0 | xargs -0 du -ch
Explicación de opciones:
find
– Lo que estabas usando para encontrar archivos-print0
– Divida cada resultado con un carácter nulo, que es un carácter que no puede aparecer en un nombre de archivo
xargs
– Ensambla argumentos a un comando canalizado desde la entrada estándar (stdin)-0
– Recibir cada argumento dividido por un carácter nulodu -ch
– El comando al que desea pasar los argumentos del archivo
En cuanto a por qué su propuesta sed
la forma de escapar no funciona, el \
los caracteres que está tratando de agregar se colocan después del delimitador del argumento de shell (" ") el escape ya ha tenido lugar. Cada palabra, delimitada por un espacio, ya es un argumento.
Mi solución con xargs
asegura que cada argumento es una ruta desde find
, independientemente de los espacios.