디렉터리에 있는 모든 파일의 시작 부분에 두 줄을 추가하려고 합니다.
다음을 사용하여 단일 파일에 대해 이 작업을 수행할 수 있습니다.
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행 뒤에 추가"를 의미합니다. 이것은 ex
POSIX 파일 편집기(다른 형식의 편집기이기도 함)에 대한 명령 입니다 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
$\
.print
echo