是否可以擦除目录中所有给定文件的内容?例如如果我有一堆.csv文件,我想要擦除。
我通常使用"#>的.csv"在单个csv文件的命令行上,但是"#> *的.csv"导致错误:bash:* .csv:模糊重定向
我已尝试将/ dev / null管道传输到* .csv但得到相同的结果。当我的目录中充满了我想要擦除其内容的文件时,这真的很痛苦。
如果我在所有文件上使用脚本和for循环,那么在循环中使用$ f(文件)上的重定向时会出现相同的错误。
谢谢
答案 0 :(得分:3)
for f in *.csv; do
> "$f"
done
答案 1 :(得分:2)
您可以truncate
使用相同的内容:
truncate -s 0 *.csv
答案 2 :(得分:0)
当您说" 擦除"你的意思是:
删除:
rm *.csv #will delete all .csv file in the currect directory
截断
see @John Zwinkcs answer
随机覆盖并删除
shopt -s nullglob
for file in *.csv
do
echo "wiping $file" >&2
eval "$(gstat -c 'count=%b;blocksize=%B' "$file")"
dd if=/dev/random of="$file" bs="$blocksize" count="$count" 2>/dev/null
rm "$file"
done
答案 3 :(得分:0)
这是一种使用sed的方式
sed -i '1,$d' *.csv
也
sed -ni '' *.csv