일부 파일 수정 및 파일 이름 추가

일부 파일 수정 및 파일 이름 추가

디렉토리에 많은 텍스트(수백 개의 txt)가 있습니다. 각각 고유한 파일 이름이 있습니다. 각 파일의 첫 번째 줄에 각 파일의 파일 이름을 삽입하고 싶습니다. Bash 스크립트를 사용하여 이 작업을 어떻게 수행할 수 있나요?

답변1

표준 접근 방식은 임시 파일을 사용하는 것이지만 파일을 괄호 cat로 묶으면 해당 위치에서 파일을 변경할 수 있습니다 $().

for file in *.txt; do echo "$file"$'\n'"$(cat -- "$file")" > "$file"; done

답변2

표준 텍스트 편집기를 사용할 수 있습니다.

for f in *; do printf '%s\n' 1i "$f" . w q | ed "$f"; done

답변3

for file in *; do
 (echo "$file"; cat -- "$file") > "$file.new"
 mv -- "$file.new" "$file"
done

이 루프는 모든 파일을 반복하여 각 파일 이름을 에코하고 파일 내용을 추가한 다음 추가된 접미사를 사용하여 모두 넣습니다 .new.

기존 파일마다 새 파일을 생성하므로 나중에 파일 이름을 바꿔야 합니다.

결과를 새 디렉터리에 넣은 다음 이전 디렉터리를 삭제할 수 있습니다.

mkdir new
for file in *; do
 (echo "$file"; cat "$file") > "new/$file"
done

-i 파일을 제자리에서 편집하는 옵션과 함께 sed를 사용할 수도 있습니다 . Perl도 이것을 허용합니다. 그것은 모두 사용 가능한 다른 도구에 따라 다릅니다. :)

관련 정보