디렉토리에서 확장자가 .dat인 모든 파일의 내용을 플러시하는 방법은 무엇입니까?

디렉토리에서 확장자가 .dat인 모든 파일의 내용을 플러시하는 방법은 무엇입니까?

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

나는 이렇게 달성하려고 노력했지만 효과가 없었습니다.

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

답변1

당신은 할 수 있습니다 :

:|tee -- *.dat

또는 zsh(with multios)와 동등한 것:

:>*.dat

하지만 모든 파일을 동시에 열기 때문에 파일 수가 많은 경우 최대 열린 파일 설명자 수에 대한 제한에 도달할 수 있습니다.

답변2

노력하다

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

이것은 기본적으로 모든 파일을 반복하여 수행합니다 >.

답변3

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

truncate -s 0 -c -- *.dat

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

관련 정보