Вставьте сообщение авторского права в несколько файлов

Как Вы вставили бы сообщение авторского права в самом верху каждого файла?

8
задан Dave Jarvis 15 March 2010 в 20:40
поделиться

3 ответа

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

Рекурсивное решение (находит все файлы .txt во всех подкаталогах):

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

Будьте осторожны; если в именах файлов есть пробелы, вы можете получить неожиданное поведение.

12
ответ дан 5 December 2019 в 10:02
поделиться

Вы можете использовать этот простой скрипт

#!/bin/bash

# Usage: script.sh file

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

Список файлов можно управлять с помощью утилиты поиска

0
ответ дан 5 December 2019 в 10:02
поделиться

sed

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

Или оболочка

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

, чтобы сделать это рекурсивно, если у вас bash 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

или с помощью find

find /path -type f  | while read -r file
do
  echo "Copyright" > tempfile
  cat "$file" >> tempfile;
  mv tempfile "$file";
done
5
ответ дан 5 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: