2010-03-15 30 views

Trả lời

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

giải pháp đệ quy (tìm tất cả .txt tập tin trong tất cả các thư mục con):

#!/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 

Sử dụng thận trọng; nếu không gian tồn tại trong tên tệp, bạn có thể nhận được hành vi không mong muốn.

+0

+1 Đối lừa tiếp theo của mình, Paul sẽ được làm việc đó trong 5 byte với 'perl -e ' –

+0

+1 Rất tuyệt! Sẽ đi vào kho công cụ của tôi. Tôi tự hỏi, làm thế nào một trong những sẽ làm cho đệ quy? –

+0

@Byron Whitlock: tại sao là perl? sed sẽ làm tốt –

0

Bạn có thể sử dụng kịch bản này đơn giản

#!/bin/bash 

# Usage: script.sh file 

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

danh sách tập tin có thể được quản lý thông qua tìm tiện ích

5

sed

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

Hoặc 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 

để làm điều đó đệ quy , nếu bạn có cơ sở 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 

hoặc sử dụng find

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

được thực hiện rất tốt. Bạn đã giới thiệu rất nhiều kỹ thuật ở đây. Tôi sẽ nghiên cứu chúng sau này. cảm ơn bạn. –

0

Làm việc trong Mac OSX:

#!/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 
Các vấn đề liên quan