Substituição no local de linhas que correspondem a algum padrão em um determinado conjunto de arquivos

2

Seguindo a minha pergunta anterior:

Remove slashes/parent paths from filenames inside CSS and Javascript content

Cheguei ao seguinte comando que substitui qualquer nome de arquivo nesses arquivos apenas pelo nome de base:

grep -o -h -E '[A-Za-z0-9:./_-]+\.(png|jpg|gif|tif|css)' |\
  sed "s:[a-zA-z0-9]*/::" 'find . -name '*.css' -or -name '*.js'' 

Como eu salvo a saída deste comando de volta ao arquivo de origem para cada arquivo processado?

    
por Nicolas Kaiser 12.07.2011 / 18:26

2 respostas

1

Resposta tardia a uma pergunta antiga, mas acho que esta é a resposta que o OP estava procurando:

SEDCMD="/[A-Za-z0-9:./_-]+\.(png|jpg|gif|tif|css)/ s:[a-zA-z0-9]*/::"
find . -name '*.css' -or -name '*.js' -exec sed -i "$SEDCMD" '{}' ';'
    
por 11.08.2011 / 21:15
0

Tente um loop, como:

find . -name '*.css' -or -name '*.js' | while read filename; do
  : $filename is the original file name
done
    
por 12.07.2011 / 18:40