Eu tenho o seguinte comando:
ls /some/path/*dat | xargs -n 1 -I @ sh -c "echo 'basename @'"
com o diretório /some/path/
contendo:
/some/path/a
/some/path/b
/some/path/c
/some/path/d
Eu quero obter a saída:
a
b
c
d
Mas ainda estou recebendo caminhos completos. O que estou fazendo errado?
edit: BTW, eu sei que existe uma maneira mais fácil, posso apenas executar basname
em vez de
echo 'basename @'
Mas eu preciso executar um comando complexo, algo como
octave --silent --eval "somefunction(''basename @'','@',...))"
edit2:
Aqui está o comando real:
ls ~/phd/data/conll2012/dev.megam/*dat | xargs -P 16 -n 1 -I@ timeout -k 1s 15m sh -c "if [ ! -f '~/phd/xp/conll2012/dev.megam/@.$epsilon$mink$minn$alpha' ]; then octave --silent --eval \"xprp('~/phd/xp/conll2012/dev.megam/@.$epsilon$mink$minn$alpha.rp','@',$alpha,$mink,$minn,$epsilon);\" 2>> ~/xpgrid.log;fi"
Basicamente, eu tenho um conjunto de arquivos em um diretório e esse comando se alimenta desses arquivos para gerar resultados em outro diretório, verificando se o resultado ainda não existe.
Então, eu preciso dos dois arquivos com fullpath e arquivos com apenas o nome base.
Como fazer isso funcionar? O exemplo mais fácil no começo pode ajudar a tornar isso mais claro.