디렉토리에서 확장자가 .dat인 모든 파일의 내용을 새로 고치려면 어떻게 해야 합니까?

디렉토리에서 확장자가 .dat인 모든 파일의 내용을 새로 고치려면 어떻게 해야 합니까?

디렉터리에 확장자가 .dat인 파일이 있는데 디렉터리에서 해당 파일을 삭제하지 않고 해당 파일을 모두 비우고 싶습니다.

이렇게 구현하려고 했으나 성공하지 못했습니다.

> *.dat
-bash: *.dat: ambiguous redirect

답변1

다음을 수행할 수 있습니다.

:|tee -- *.dat

또는 zsh( multios동일):

:>*.dat

그러나 이렇게 하면 모든 파일이 동시에 열리기 때문에 파일 수가 많은 경우 열린 파일 설명자 최대 개수에 도달할 수 있습니다.

답변2

노력하다

for x in *.dat
do
    > "$x"
done

이것은 기본적으로 모든 파일을 반복하여 >.

답변3

시스템에 truncateGNU coreutils의 유틸리티가 있으면 다음을 수행할 수 있습니다.

truncate -s 0 -c -- *.dat

-s 0일치하는 항목이 없으면 리터럴 이름을 가진 새 파일이 생성되지 않도록 하면서 크기를 0으로 설정합니다 -c(이 경우 쉘이 확장되지 않은 파일을 반환하는 경우).*.dat*.dat

관련 정보