Linux是否可以清空目录中所有文件的内容?

13

在一个命令中(无需循环),是否可以清空目录中每个文件的内容?


2
你为什么想要避免循环? - nneonneo
1
一个精心制作的 AWK 或 Bash 命令是否被认为是一个编程问题? - Jason Sperske
我想要一个单一的命令从命令行运行。我相信可以使用 "find -type f -exec echo ""....." 的方法来完成,只是无法完成它。 - Marty Wallace
@MartyWallace:你也可以在命令行中输入(或粘贴)循环。 - nneonneo
是的,但我认为这不好。 - Marty Wallace
相关 https://dev59.com/NWUq5IYBdhLWcg3wXvMC - Jesse Nickles
2个回答

18

使用truncate:

truncate -s 0 directory/* &> /dev/null

它可以使用通配符,不像cat /dev/null... truncate -s 0 /var/logs/*.log - Jesse Nickles

13

这看起来非常丑,但是它能够正常工作:

find . -type f -exec sh -c 'echo -n "" > $1' sh {} \;

这将清空每个子目录中的所有文件。

如果只想要清空当前目录中的文件:

for i in *; do cat /dev/null > $i; done

(是的,这是一个循环,但只有一行代码。)


我发现这个对我很有用,但你可能想要将printf输出更改为“”。另外,echo -n ""实际上会在每个文件中放置“-n”。 - qaisjp
2
echo -n "" 是不必要的;'> $1' 就可以了。 - rymo
很棒!:-D :-p - Pedro Rolo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接