2010-07-17 6 views
0

Je suis en train d'écrire un script Ruby qui se penchera dans un répertoire et ses sous-répertoires pour les fichiers HTML, ouvrez les fichiers HTML et insérez la ligne suivante juste au-dessus de la balise de tête de fermeture:recherche Ruby et remplacer dans les fichiers

<link rel="stylesheet" href="styles.css" type="text/css" /> 

J'essaie de le faire avec Ruby parce que c'est la seule langue avec laquelle je suis familier mais j'ai accès à pratiquement n'importe quelle langue. Quelqu'un pourrait-il donner un coup de main?

Vive

Eef

Répondre

4
def find_and_replace(dir) 
    Dir[dir + '/*.html'].each do |name| 
    File.open(name, 'r+') do |f| 
     new_file = f.read.sub /^(*)(<\/\s*head>)/, %Q(\\1 <link rel="stylesheet" href="styles.css" type="text/css" />\n\\1\\2) 
     f.truncate 0 
     f.write new_file 
    end 
    end 
    Dir[dir + '/*/'].each(&method(:find_and_replace)) 
end 

find_and_replace '.' 
+0

Cheers, un excellent petit script, a appris des choses que je ne l'ai jamais vu auparavant, merci. – RailsSon

+1

Pas besoin de la récursivité, vous pouvez simplement utiliser 'Dir.glob (" **/*. Html ")' (voir http://ruby-doc.org/core/classes/Dir.html#M002322). – Ventero

+0

@Ventero: Merci d'avoir signalé cela. Je me demandais s'il y avait un moyen de le faire quand j'ai écrit ceci. – Adrian

Questions connexes