Bash - 如何擦除目录中所有文件的内容

时间:2014-09-09 11:58:58

标签: bash shell

是否可以擦除目录中所有给定文件的内容?例如如果我有一堆.csv文件,我想要擦除。

我通常使用"#>的.csv"在单个csv文件的命令行上,但是"#> *的.csv"导致错误:bash:* .csv:模糊重定向

我已尝试将/ dev / null管道传输到* .csv但得到相同的结果。当我的目录中充满了我想要擦除其内容的文件时,这真的很痛苦。

如果我在所有文件上使用脚本和for循环,那么在循环中使用$ f(文件)上的重定向时会出现相同的错误。

谢谢

4 个答案:

答案 0 :(得分:3)

for f in *.csv; do
  > "$f"
done

答案 1 :(得分:2)

您可以truncate使用相同的内容:

truncate -s 0 *.csv 

答案 2 :(得分:0)

当您说" 擦除"你的意思是:

  • " overwite"随机内容,
  • 或简单的"截断"
  • 甚至更简单的删除?

删除:

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