Внутренний вызов функции с параметрами xargs

Внутренний вызов функции с параметрами xargs

Я пытаюсь создать файл, находящийся в моем /tmpкаталоге для каждого файла, содержащего определенную строку.

Проблема в том, что вызов, basename {}похоже, не работает. Ни это, ни echo basename {}.

grep -R 'mystring' . | cut -d: -f 1 | uniq | xargs -n 1 -I {} touch /tmp/`basename {}`

Кто-нибудь знает, как мне заставить функцию basename выполниться для параметра xargs?

решение1

попробуй это:

grep -R 'mystring' . | cut -d: -f 1 | uniq| xargs -n 1 -I {} -t -i ksh  -c "touch /tmp/$(basename {})"

решение2

Проблема в том, что обратные кавычки раскрываются слишком рано (т.е. не один раз для каждого аргумента, отправленного в xargs). Возможно, есть способ получше, но вы должны иметь возможность обойтись явным циклом bash:

grep -R 'mystring' . | cut -d: -f 1 | uniq | while read f; do touch "/tmp/`basename $f`"; done

Связанный контент