디렉토리에 있는 모든 파일의 데이터를 지우는 방법은 무엇입니까?

디렉토리에 있는 모든 파일의 데이터를 지우는 방법은 무엇입니까?

일부 텍스트 파일이 포함된 폴더와 더 많은 텍스트 파일이 포함된 다른 폴더가 있습니다. 폴더를 반복적으로 반복하고 디렉터리와 하위 디렉터리에 있는 모든 파일의 모든 내용을 지우는 명령이 필요합니다.

어떻게 해야 하나요?

답변1

다음과 같은 방법으로 이 작업을 수행할 수 있습니다 find.

cd top_level_dir
find . -type f -exec bash -c "echo -n '' > {}" \;

각 파일 이름에 대해 Bash(매우 효율적이지 않음)를 호출하고 . -n때문에 개행 없이 에코합니다. 기본적으로 파일에 영향을 주지 않으며 내용을 덮어쓰고 길이가 0인 파일을 생성합니다.

파일이 많거나 입력에서 NUL로 끝나는 파일 이름 목록을 읽고 각 파일 이름에 0바이트를 쓰는 작은(C/Python/Perl/Ruby) 유틸리티가 자주 필요한 경우 이 유틸리티를 사용하면 속도가 크게 향상됩니다( find -type f -print0 | your_zeroing_util).

예를 들어 다음을 사용할 수 있습니다 your_zeroing_util.

#!/usr/bin/env python

import sys

inp = sys.stdin.read()
while inp:
   if '\0' in inp:
      file_name, inp = inp.split('\0', 1)
      # print("emptying [{}]".format(file_name))
      with open(file_name, 'w') as fp:
         pass
   inp += sys.stdin.read()

관련 정보