как очистить содержимое всех файлов с расширением .dat в каталоге?

как очистить содержимое всех файлов с расширением .dat в каталоге?

В каталоге есть несколько файлов с расширением .dat. Я хочу очистить все такие файлы, не удаляя их из каталога.

Я пытался добиться этого таким образом, но не получилось.

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

решение1

Вы можете сделать:

:|tee -- *.dat

Или zshmultios) эквивалент:

:>*.dat

Однако поскольку при этом все файлы открываются одновременно, вы можете достичь ограничения на максимальное количество открытых файловых дескрипторов, если файлов много.

решение2

пытаться

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

по сути это цикл по всем файлам, выполняющий >над ними.

решение3

Если в вашей системе есть truncateутилита (из GNU coreutils), вы можете сделать следующее:

truncate -s 0 -c -- *.dat

Устанавливает -s 0размер равным нулю, одновременно -cпредотвращая создание нового файла с буквальным именем *.datв случае отсутствия совпадений, если *.datв этом случае ваша оболочка возвращает неразвернутое значение.

Связанный контент