Sie haben richtig festgestellt, dass das Problem die >
Weiterleitung ist. Zwei Lösungen:
Verwenden Sie entweder so etwas:
find . -type f -name "*.ext" -exec sh -c "head -c 128 '{}' > ~/Desktop/heads/'{}'" \;
Oder Sie können das '{}'
Argument auch als Argument an die Subshell übergeben:
find . -type f -name "*.ext" -exec sh -c 'head -c 128 $1 > ~/Desktop/heads/$1' -- {} \;
Letzteres funktioniert, weil -- {}
der Dateiname als Argument an übergeben wird sh -c
, auf das mit zugegriffen werden kann $1
. Beachten Sie, dass Sie jetzt einfache Anführungszeichen '
anstelle von Anführungszeichen verwenden müssen.
Update: Ich habe tatsächlich eine Stack Overflow-Frage gefunden, die das zugrunde liegende Problem von Ihnen abdeckt, nämlich die Verwendung >
innerhalb xargs
oder ähnlicher Befehle:
Wie verwende ich> in einem xargs-Befehl?
Ich möchte einen bash-Befehl finden, mit dem ich jede Datei in einem Verzeichnis grep und die Ausgabe dieses grep in eine separate Datei schreiben kann. [...]