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.