Вы правильно заметили, что проблема в >
перенаправлении. Два решения:
Либо используйте что-то вроде этого:
find . -type f -name "*.ext" -exec sh -c "head -c 128 '{}' > ~/Desktop/heads/'{}'" \;
Или вы можете также передать в '{}'
качестве аргумента подоболочку:
find . -type f -name "*.ext" -exec sh -c 'head -c 128 $1 > ~/Desktop/heads/$1' -- {} \;
Последний работает, потому что -- {}
передает имя файла в качестве аргумента, к sh -c
которому можно получить доступ $1
. Обратите внимание, что теперь вам придется использовать одинарные кавычки '
вместо двойных.
Обновление: я на самом деле нашел вопрос переполнения стека, который касается вашей основной проблемы, а именно использования >
внутри xargs
или аналогичных команд:
Как использовать> в команде xargs?
Я хочу найти команду bash, которая позволит мне grep каждый файл в каталоге и записать вывод этого grep в отдельный файл. [...]