디렉토리에 있는 모든 파일의 시작 부분에 줄을 추가합니다.

디렉토리에 있는 모든 파일의 시작 부분에 줄을 추가합니다.

디렉터리에 있는 모든 파일의 시작 부분에 두 줄을 추가하려고 합니다.

다음을 사용하여 단일 파일에 대해 이 작업을 수행할 수 있습니다.

echo -e "% First Line\n% "$(date)"\n\n$(cat file1.txt)">file1.txt

처음에 두 줄을 추가하는 방법모두디렉토리에 파일이 있나요?

답변1

먼저 명령은 다음과 같습니다.

echo -e "% First Line\n% "$(date)"\n\n$(cat file1.txt)">file1.txt

이것은강력히 권장하지 않습니다. 파일에 백슬래시가 포함되어 있으면 문제가 발생합니다. 인용문과 명령 대체를 읽어보세요.


단일 파일의 경우 파일 시작 부분에 줄을 삽입하는 권장 POSIX 방법은 다음과 같습니다.

printf '%s\n' 0a 'First line' '2nd line; 3rd line is empty' '' . x | ex file.txt

0a"0행 뒤에 추가"를 의미합니다. 이것은 exPOSIX 파일 편집기(다른 형식의 편집기이기도 함)에 대한 명령 입니다 vi. 줄 .자체의 끝에 추가됩니다. x저장 및 종료.

여러 파일을 한 번에 처리하려면 루프 for와 파일 글로브를 사용하세요.

for f in *.txt; do
  printf '%s\n' 0a '# This line heads all files' . x | ex "$f"
done

답변2

sed플랫폼이 다음을 사용하여 내부 편집을 지원하는 경우

sed -i "1i\\
First line\\
$(date)" *

불행하게도 이 부분은 sed약간 투박합니다. 문서에서 정확한 구문을 파악하는 데 어려움을 겪었던 기억이 납니다.

답변3

perl -i -lpe '
   $FNR++ or print "% First Line\n%", `date`, $\;
   $FNR = 0 if eof;
' *.txt

각 파일의 첫 번째 입력 줄에 대해서만 필요한 문자열을 인쇄합니다. 명령문에서 요구하는 대로 추가 줄바꿈을 추가합니다 ORS $\.printecho

관련 정보