2010-03-15 9 views

Antwort

12
#!/bin/bash 
for file in *; do 
    echo "Copyright" > tempfile; 
    cat $file >> tempfile; 
    mv tempfile $file; 
done 

rekursive Lösung (findet alle .txt Dateien in allen Unterverzeichnissen):

#!/bin/bash 
for file in $(find . -type f -name \*.txt); do 
    echo "Copyright" > copyright-file.txt; 
    echo "" >> copyright-file.txt; 
    cat $file >> copyright-file.txt; 
    mv copyright-file.txt $file; 
done 

Sie vorsichtig; Wenn Leerzeichen in Dateinamen vorhanden sind, kann dies zu unerwartetem Verhalten führen.

+0

+1 Für seinen nächsten Trick, Paul wird es in 5 Byte tun mit 'perl -e ' –

+0

+1 Schön! Wird in mein Tools-Repository gehen. Ich frage mich, wie würde man das rekursiv machen? –

+0

@Byron Whitlock: warum Perl? sed würde es gut machen –

0

können Sie dieses einfache Skript verwenden

#!/bin/bash 

# Usage: script.sh file 

cat copyright.tpl $1 > tmp 
mv $1 $1.tmp # optional 
mv tmp $1 

Dateiliste über Such-Utility verwaltet werden können

5

sed

echo "Copyright" > tempfile 
sed -i.bak "1i $(<tempfile)" file* 

oder Shell

#!/bin/bash 
shopt -s nullglob  
for file in *; do 
    if [ -f "$file" ];then 
    echo "Copyright" > tempfile 
    cat "$file" >> tempfile; 
    mv tempfile "$file"; 
    fi 
done 

es rekursiv zu tun , wenn du bas hast h 4,0

#!/bin/bash 
shopt -s nullglob 
shopt -s globstar 
for file in /path/** 
do 
     if [ -f "$file" ];then 
     echo "Copyright" > tempfile 
     cat "$file" >> tempfile; 
     mv tempfile "$file"; 
     fi 
done 

oder find

find /path -type f | while read -r file 
do 
    echo "Copyright" > tempfile 
    cat "$file" >> tempfile; 
    mv tempfile "$file"; 
done 
+0

sehr gut gemacht. Sie haben hier viele Techniken eingeführt. Ich werde sie später studieren. Danke. –

0

Arbeiten in Mac OSX mit:

#!/usr/bin/env bash 

for f in `find . -iname "*.ts"`; do # just for *.ts files 
    echo -e "/*\n * My Company \n *\n * Copyright © 2018 MyCompany. All rights reserved.\n *\n *\n */" > tmpfile 
    cat $f >> tmpfile 
    mv tmpfile $f 
done