Was wäre, wenn wir find die Dateinamen behandeln lassen würden?
find . -maxdepth 1 -iname '*syed*' -exec du -ch {} +
Wie wäre es damit?:
find . -maxdepth 1 -iname '*syed*' -print0 | xargs -0 du -ch
Erläuterung der Optionen:
find
– Was Sie zum Suchen von Dateien verwendet haben-print0
– Teilen Sie jedes Ergebnis mit einem Nullzeichen, das ein Zeichen ist, das nicht in einem Dateinamen vorkommen kann
xargs
– Setzt Argumente zu einem Befehl zusammen, der von der Standardeingabe (stdin)- geleitet wird
-0
– Erhalte jedes Argument getrennt durch ein Nullzeichendu -ch
– Der Befehl, an den Sie Dateiargumente übergeben möchten
Warum Ihr vorgeschlagener sed
Fluchtweg funktioniert nicht, der \
Zeichen, die Sie hinzufügen möchten, werden nach dem Trennzeichen des Shell-Arguments eingefügt (" ") Escaping hat bereits stattgefunden. Jedes durch Leerzeichen getrennte Wort ist bereits ein Argument.
Meine Lösung mit xargs
stellt sicher, dass jedes Argument ein Pfad von find
ist , unabhängig von Leerzeichen.