일부 텍스트 파일이 포함된 폴더와 더 많은 텍스트 파일이 포함된 다른 폴더가 있습니다. 폴더를 반복적으로 반복하고 디렉터리와 하위 디렉터리에 있는 모든 파일의 모든 내용을 지우는 명령이 필요합니다.
어떻게 해야 하나요?
답변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()