
ディレクトリ内に .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