您将如何使用单个命令清空终端中的多个文本文件?
我的想法是,您可以按照这些思路使用一些东西...:
find /var/log/apache2/*log -exec `echo > '{}'` \;
我知道创建一个 shell 脚本很简单:
echo "#!/bin/sh\n\necho \"\" > \"$1\"" > /usr/local/bin/empty && chmod +x /usr/local/bin/empty
...
find /var/log/apache2/*.log -exec empty {} \;
但是否可以在不以类似方式创建自己的脚本的情况下做到这一点?
最佳答案
#!/bin/bash
for file in /var/log/apache2/*.log; do
: > "$file"
done
或者单行版本
for file in /var/log/apache2/*.log; do : > "$file"; done
如果你需要递归到子目录,那么你可以使用以下两个选项:
bash 4.X
shopt -s globstar; for file in /var/log/apache2/**.log; do : > "$file"; done
正统
find /var/log/apache2 -type f -name "*.log" -exec sh -c 'for f; do : > "$f"; done' _ {} +
关于bash - 一行命令清空终端中的多个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685576/