파일에서 텍스트를 지우는 방법?


70

텍스트 파일에 존재하는 텍스트를 열지 않고 지우는 방법은 무엇입니까?

예를 들어 hello.txt텍스트 데이터 가있는 파일 이 있는데 파일 을 열지 않고 전체 텍스트를 지우려면 어떻게 해야합니까?

이것은 nano, Gedit 등과 같은 편집기를 사용하지 않음을 의미합니다.


1
파일을 '열다'는 것은 무엇을 의미합니까? 지금까지 제공된 모든 답변에서 파일은 여전히 ​​셸에서 쓰기 위해 열립니다. 결국 쉘은 다른 프로그램과 같습니다.
Jeff


Hus787 나는 당신이 그렇게 생각한다면 거기에 도착하는 것을 입력하지 않았습니다. 내 질문에 대한 당신의 관심을 환영합니다.
rɑːdʒɑ

나는 Jeff의 의견에 동의합니다 ... 나도 텍스트 스트림 편집기를 사용하든 리디렉션을 사용하든 파일 스트림을 열어야한다는 의견이 있습니다 *. ( * 문제를 돕기 위해 링크를 제안한 사람에게 감사 )
정확한

답변:


138

CTRL+ ALT+로 터미널을 열고 다음 T과 같이 입력하십시오.

 > hello.txt

그게 전부입니다. 파일을 열지 않아도 해당 파일의 데이터가 지워집니다.

예:

여기에 이미지 설명을 입력하십시오


5
기술적으로 파일이 열립니다. 에디터가 아니라
John Dibling

2
@JohnDibling 실제로 이것은 리디렉션이며 파일이 여기에서 열리지 않는다고 생각합니다. 재 지정 내용이 stdout있으면 기존 파일 을 덮어 씁니다. 이 경우에는 아무것도 없습니다 stdout. 따라서 파일이 공백으로 덮어 쓰여지고 기본 데이터가 있으면 삭제됩니다.
souravc

이 명령을 취소 할 수있는 방법이 있습니까?
Rao

@Rao,> 10GB와 같으면 클 수 있습니다. 그러나 얼마나 확실하지 않습니다.
rɑːdʒɑ

28

파일을 자르는 가장 쉬운 방법은 셸 no-op 명령 ( :) 의 출력 을 지우려는 파일 로 리디렉션하는 것 입니다.

: > hello.txt

2
그것의 아마 가장 쉬운 (단지 상대하지 >)하지만이 매우 볼 question..here의 답변의에서 언급되지 않은 이유를 sure..i 경이 가장 빠른은 +1을 ..
heemayl

13

또한 rajagenupula의 답변과 같은 리디렉션을 사용하려고합니다. 그러나 약간 더 유연성이 있습니다. 터미널을 열고 다음을 입력하십시오.

cat > hello.txt

그리고 언론 Ctrl+ C. 이전 파일이 지워집니다. 이 정도까지 원한다면 괜찮습니다.

원하는 경우 파일을 삭제 한 후 더 많은 작업을 수행 할 수 있습니다. 이런 식으로 파일을 열지 않고도 파일을 지울 수있을뿐만 아니라 파일에 적절한 형식으로 몇 줄을 쓸 수 있습니다. 파일을 삭제 한 후 "우분투는 최고의 OS입니다"라고 쓰고 싶다고 말하십시오.

cat > hello.txt
Ubuntu is the 
best OS

그런 다음 Ctrl+를 누르십시오 C. 이제 이전 파일이 지워집니다. 동시에 단어를 두 줄에 넣습니다.

예를보십시오 :

여기에 이미지 설명을 입력하십시오


답변 주셔서 감사합니다. 그래서 작은하지만 작품은 그 직후에 수행되는도 및하지만 여전히 흥미로운 + 1.
rɑːdʒɑ

>리디렉션을 나타냅니다. cat > file쓸 것이다 stdout기존 파일을 덮어 쓰기, 파일에.
souravc

10

나는 항상 로그 파일 로이 작업을 수행해야합니다. 내가 찾은 가장 쉬운 방법은 다음 명령을 사용하는 것입니다.

cat /dev/null > hello.txt

이렇게하면 파일의 내용이 모두 삭제되고 편집기에서 파일을 열거 나 텍스트를 선택하지 않고 빈 파일로 남겨 둡니다. 보다 구체적으로 파일의 내용을 "/ dev / null"의 내용으로 바꾸거나 아무것도하지 않는 것입니다. 실제로는 매끄 럽습니다.

유일한 경고는 현재 로그인 한 사용자에게 해당 파일에 대한 쓰기 권한이 있어야한다는 것입니다.


답변 감사합니다. 더보기 좋게 보이도록 예제를 추가하십시오. +1
rɑːdʒɑ

5

파일이 hello.txt 라는 이름으로 생성되고 일부 텍스트가 제공된 경우 터미널 ctrl+ alt+ 의 아래 명령 thello.txt 파일 의 모든 텍스트를 제거 합니다.

echo "" > hello.txt

여기에 이미지 설명을 입력하십시오


답변 해 주셔서 감사합니다. +1 좀 더 예쁘게 보일 수 있도록 예제로 확장하십시오.
rɑːdʒɑ

3

또 다른 방법 - 파일에cp/dev/null

xieerqi:$ cat testFile.txt                                                                                        
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 83100492  26269816  76% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914492        4   2914488   1% /dev
tmpfs             585216     1152    584064   1% /run
none                5120        0      5120   0% /run/lock
none             2926072    98096   2827976   4% /run/shm
none              102400       76    102324   1% /run/user

xieerqi:$ cp /dev/null testFile.txt                                                                               

xieerqi:$ cat testFile.txt

xieerqi:$ 

당신은 멋진 남자입니다!
Yasser Sinjab

2

가장 짧은 대답은 아니지만 ...

이 답변은 수퍼 유저의 다른 답변을 기반으로 합니다. 가장 짧은 bash 명령 truncate은 아니지만 일반 초보자에게는 가장 읽기 쉽습니다.

$ echo Hello > Hello.txt
$ echo World! >> Hello.txt
$ cat Hello.txt
Hello
World!
$ truncate -s 0 Hello.txt
$ ll Hello.txt
-rw-rw-r-- 1 rick rick 0 Mar 20 17:32 Hello.txt

truncate여기서 명령 과 함께 사용되는 매개 변수 :

  • "-s"크기 설정
  • "0"크기는 0입니다

처음 10,000 바이트를 제외한 모든 내용 지우기

장점은 truncate0이 아니라 유지할 양을 지정할 수 있다는 것입니다 .

$ truncate -s 10000 Hello.txt

... 처음 10,000 바이트 이후의 모든 것을 자릅니다. 프로그램이 미쳐서 많은 메가 바이트의 데이터를 작은 로그 파일로 덤프 한 경우에 유용 할 수 있습니다.

  • truncate합당한 더 큰 보통 크기 10K로 명령을 실행하십시오.
  • 텍스트 편집기로 파일을 열고 End
  • PgUp속하지 않는 나머지 바이트를 강조 표시하고 삭제합니다 (일반적으로 ASCII 가비지 문자로 인식 가능).

0

그래서 나는 이것에 대답하기 위해 많은 방향 전환이 사용되는 것을 본다.)

콤보와 약간 다른 접근법 : rm & touch

rm hello.txt && touch hello.txt

( 예 ... 아직 또 다른 치트! )

따라서이 명령 콤보를 사용 하면 hello.txt 파일이 열리지 않고 결국 내용이 지워진 hello.txt 파일이 여전히 있습니다. 당신이 원하는 것처럼!


3
내 의견으로는 좋은 '속임수'가 아니라면 파일 권한을 변경할 수 있습니다.
Parto

1
삭제하는 것이 좋습니다. 문제가 발생할 수 있습니다. 로그 파일에서 수행하면 서비스에서 로그가있을 것으로 예상하고 쓸 수있는 예상치 못한 동작이 발생할 수 있습니다.
Rinzwind

이 답변이 관심의 대상이되는 최선의 방법은 아니지만 : 소유자 / 권한 문제를 해결하려면 먼저 소유권과 권한을 확인한 후 다음을 추가하십시오 (필요에 따라 조정) : && sudo chown user : group hello.txt && sudo chmod 644 hello.txt
Chris

inode 번호가 삭제됩니다. 새로운 inode 번호가 생성됩니다. 나쁜 생각.
Dipankar Nalui

0
vi filename -c ':1,$d' -c ':wq'

특정 권한 때문에 나를 위해 최선을 다했습니다.


가지고있는 문제를 자세히 설명하여이 답변을 개선 할 수 있습니다. 또한 프로그램 vi이 무엇인지, 다양한 매개 변수와 인수가 무엇인지 설명 할 수 있습니다.
WinEunuuchs2Unix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.