![디렉토리에서 확장자가 .dat인 모든 파일의 내용을 새로 고치려면 어떻게 해야 합니까?](https://linux55.com/image/95524/%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%97%90%EC%84%9C%20%ED%99%95%EC%9E%A5%EC%9E%90%EA%B0%80%20.dat%EC%9D%B8%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%82%B4%EC%9A%A9%EC%9D%84%20%EC%83%88%EB%A1%9C%20%EA%B3%A0%EC%B9%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
디렉터리에 확장자가 .dat인 파일이 있는데 디렉터리에서 해당 파일을 삭제하지 않고 해당 파일을 모두 비우고 싶습니다.
이렇게 구현하려고 했으나 성공하지 못했습니다.
> *.dat
-bash: *.dat: ambiguous redirect
답변1
다음을 수행할 수 있습니다.
:|tee -- *.dat
또는 zsh
( multios
동일):
:>*.dat
그러나 이렇게 하면 모든 파일이 동시에 열리기 때문에 파일 수가 많은 경우 열린 파일 설명자 최대 개수에 도달할 수 있습니다.
답변2
노력하다
for x in *.dat
do
> "$x"
done
이것은 기본적으로 모든 파일을 반복하여 >
.
답변3
시스템에 truncate
GNU coreutils의 유틸리티가 있으면 다음을 수행할 수 있습니다.
truncate -s 0 -c -- *.dat
-s 0
일치하는 항목이 없으면 리터럴 이름을 가진 새 파일이 생성되지 않도록 하면서 크기를 0으로 설정합니다 -c
(이 경우 쉘이 확장되지 않은 파일을 반환하는 경우).*.dat
*.dat