J'ai un répertoire plein de fichiers texte. Mon objectif est d'ajouter du texte au début et à la fin de chacun d'eux. Le texte qui va au début et à la fin est le même pour chaque fichier.
Basé sur le code que j'ai obtenu sur le Web, voici le code à ajouter au début du fichier:
echo -e 'var language = {\n$(cat $BASEDIR/Translations/Javascript/*.txt)' > $BASEDIR/Translations/Javascript/*.txt
Il s'agit du code à ajouter à la fin du fichier. Le but est d'ajouter le texte };
à la fin de chaque fichier:
echo "};" >> $BASEDIR/Translations/Javascript/*.txt
Les exemples que j'ai tirés étaient pour agir sur des dossiers individuels. Je pensais essayer de jouer sur plusieurs fichiers en utilisant le caractère générique, *.txt
.
Je pourrais aussi faire d'autres erreurs. Dans tous les cas, comment ajouter du texte au début et à la fin de plusieurs fichiers?
la source
-i
au lieu de cette substitution de fichier ne fonctionne pas , il s'imprime simplement sur stdout.Essayez d'utiliser
ex
:où les commandes sont:
bufdo!
exécute les commandes ci-dessous pour chaque tampon / fichier ouvert (remarque: ce n'est pas POSIX )1s/^/HEAD/
- insère duHEAD
texte dans la première ligne au début de la ligne$s/$/TAIL/
- ajoute duTAIL
texte sur la dernière ligne à la fin de la ligneet les arguments sont:
-s
- mode silencieux / rapide-cxa
- enregistrez tous les tampons / fichiers ouverts et quittez*.foo
- tous les fichiers dans le répertoire courant (*
) avec l'foo
extension, l' utilisation**/*.foo
de récursivité (après l' activation globstar:shopt -s globstar
)la source
Avec
gnu awk
, en utilisant l'inplace
extension etBEGINFILE
/ENDFILE
:la source
A également le droit d'être (avec les résultats dans des
.out
fichiers):Une autre variante plus élaborée - les fichiers source remplacés par result:
la source
Perl one-liner à la rescousse:
la source