Co kdybychom nechali find zpracovat názvy souborů?
find . -maxdepth 1 -iname '*syed*' -exec du -ch {} +
Co říkáte na tohle?:
find . -maxdepth 1 -iname '*syed*' -print0 | xargs -0 du -ch
Vysvětlení možností:
find– Co jste používali k hledání souborů-print0– Rozdělte každý výsledek znakem null, což je znak, který se nemůže vyskytovat v názvu souboru
xargs– Sestaví argumenty do příkazu rourkovaného ze standardního vstupu (stdin)-0– Přijmout každý argument rozdělený znakem nulldu -ch– Příkaz, kterému chcete předat argumenty souboru
Pokud jde o důvod, proč jste navrhli sed způsob úniku nefunguje, \ znaky, které se pokoušíte přidat, jsou vloženy za oddělovač argumentů shellu (" ") escapování již proběhlo. Každé slovo, oddělené mezerou, je již argumentem.
Moje řešení s xargs zajišťuje, že každý argument je cesta z find , bez ohledu na mezery.