
В каталоге есть несколько файлов с расширением .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
размер равным нулю, одновременно -c
предотвращая создание нового файла с буквальным именем *.dat
в случае отсутствия совпадений, если *.dat
в этом случае ваша оболочка возвращает неразвернутое значение.