
Estou tentando criar um arquivo ocorrido em meu /tmp
diretório de cada arquivo contendo uma string específica.
O problema é que a chamada para basename {}
não parece funcionar. Nem isso, nem echo basename {}
.
grep -R 'mystring' . | cut -d: -f 1 | uniq | xargs -n 1 -I {} touch /tmp/`basename {}`
Alguém sabe como posso executar a função basename no parâmetro xargs?
Responder1
tente isto:
grep -R 'mystring' . | cut -d: -f 1 | uniq| xargs -n 1 -I {} -t -i ksh -c "touch /tmp/$(basename {})"
Responder2
O problema é que os crases são expandidos muito cedo (ou seja, nem uma vez para cada argumento enviado ao xargs). Pode haver uma maneira melhor, mas você deve conseguir usar um loop bash explícito:
grep -R 'mystring' . | cut -d: -f 1 | uniq | while read f; do touch "/tmp/`basename $f`"; done