2009-03-12 15 views
1

Je me demande quelle est la meilleure façon de combiner plusieurs fichiers .html (répartis dans de nombreux dossiers) en un seul fichier html. Si quelqu'un pouvait créer une commande bash simple, ce serait fantastique. (Ceci est une solution de contournement afin que je puisse utiliser l'API de ligne de commande de firebug pour chercher efficacement un site entier pour les combinaisons de sélecteurs html.Pour autant que je sache, firebug ne peut rechercher qu'une seule page.)Commande Bash pour écrire le contenu de plusieurs fichiers dans un seul fichier

Toute aide est grandement appréciée pour cette page. concepteur front-end contrecœur.

Répondre

7
cat file1.html file2.html file3.html > newfile.html 

Modifier Cela peut être plus facile

find . -name="*.html" | xargs cat >> ../newfile.html 

Notez que newfile.html est poussé vers le haut à partir du répertoire courant de sorte qu'il ne soit pas cat'ed en lui-même.

4

Eh bien, si vous n'êtes pas préoccupé par le fichier résultant étant correct, cat semble que la meilleure façon d'aller:

cat file1.html file2.html file3.html > result.html 

Mais bien sûr chacun de ces fichiers avec une balise ont <html> en haut et une fermeture en bas, donc ce ne sera pas un fichier HTML valide. Firefox va probablement le charger, mais je ne sais pas comment il va l'afficher ... peut-être que le premier?

+0

Cela ne permet pas d'obtenir facilement tous les fichiers des sous-répertoires. – grieve

1
for file in `ls *.html`; do cat "$file" >> output.html; done 
+0

Attention aux espaces dans les noms de fichiers! Je voudrais d'abord lire les fichiers dans un tableau, puis itérer sur eux dans une boucle for, ou peut-être utiliser 'while read line; fais ' – guns

+1

C'est vrai, mais tu vas en enfer pour utiliser des espaces dans les noms de fichiers. ;) –

2

Vous utilisez toujours froid grep pour rechercher quelque chose dans un groupe de fichiers au lieu de fusionner tous les fichiers et la recherche que d'un fichier.

grep <string you are looking for> <folder containing all of files> -r 
+0

Je pense que le -r doit venir avant la chaîne et le dossier. – grieve

+0

grep -r par exemple "grep -r milquetoast". – grieve

+0

Je le pensais d'abord aussi bien, mais ça marche aussi à la fin; Je viens de faire une vérification rapide. – nan

Questions connexes