폴더의 모든 txt 파일에 단어 쓰기


10

폴더에있는 모든 .txt 파일에 "cat"이라는 단어를 쓰려면 어떻게해야합니까?

답변:


20

간단한 작업이 수행됩니다.

for i in ./*.txt; do echo 'cat' >> "$i"; done;

이것은 현재 디렉토리에있는 모든 txt 파일의 목록을 가져 와서 전체를 반복하며 그 echo안에 들어갑니다 (내용에 추가). 으로 변경 >>하여 >cat로 파일 내용을 덮어 쓸 수 있습니다 .

tee스트림을 여러 파일로 리디렉션하는 데 사용할 수도 있습니다.

덧붙이려면 :

echo "cat" | tee -a *.txt

덮어 쓰려면 :

echo "cat" | tee *.txt

사용할 죄수는 무엇 echo "cat" >> *.txt입니까?
hytromo

4
@hakermania 실패ambiguous redirect
Zanna

13

파일이 비어 있지 sed않으면 반복없이 사용할 수 있습니다 . cat처음에 추가하려면 :

sed 'i\cat' *.txt

끝에 추가하려면 다음을 수행하십시오.

sed 'a\cat' *.txt

두 번째 줄 다음에 추가하려면 :

sed '2 a\cat' *.txt

앞에 줄을 추가하려면 다음을 수행하십시오 foo.

sed '/foo/ i\cat' *.txt

빈 파일에서는 작동하지 않습니다. 버그의 종류.

(테스트 후 파일에 실제로 쓰려면 -i옵션 이 필요합니다 . sed -i 'a\cat' *.txt)


나는 sed를 싫어한다 :)), 당신이 그것으로 할 수있는 많은 일이 발생하고 나는 그들을
모른다

@Ravexina sed는 나의 잼이다;)
Zanna

'i\cat'슬래시 대신 백 슬래시를 사용합니까?
phuclv

@ LưuVĩnhPhúc 백 슬래시는 실제로 선택 사항입니다. 또는를 넣을 'icat'수도 i cat있습니다. 백 슬래시는 내가 믿는 전통적인 것입니다.
슬래시를

4

파이썬 접근법 :

#!/usr/bin/env python
import sys

for i in sys.argv[1:]:
    with open(i,'w') as fd:
        fd.write("cat\n")
  • 그것은 사용하는 sys명령 줄 인수를 반복하는 모듈을
  • 각 명령 줄 인수는 쓰기 위해 파일로 열립니다
  • 다음 줄로 가기 전에 줄 바꿈이있는 "cat"이 파일에 기록됩니다.

사용법은 현재 작업 디렉토리의 ./add_cat.py *.txt모든 .txt파일에서 작동하는 as 입니다. 여기에는 "cat"을 하드 코딩하는 대신 명령 줄 인수 # 1을 문자열로 사용하는 것이 포함될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.