您将如何使用单个命令清空终端中的多个文本文件?
我的想法是你可以沿着这些方向使用......:
find /var/log/apache2/*log -exec `echo > '{}'` \;
Run Code Online (Sandbox Code Playgroud)
我知道创建一个易于执行此操作的shell脚本非常简单:
echo "#!/bin/sh\n\necho \"\" > \"$1\"" > /usr/local/bin/empty && chmod +x /usr/local/bin/empty
Run Code Online (Sandbox Code Playgroud)
...
find /var/log/apache2/*.log -exec empty {} \;
Run Code Online (Sandbox Code Playgroud)
但是,如果不以类似的方式创建自己的脚本,是否可以这样做?
Sie*_*geX 10
#!/bin/bash
for file in /var/log/apache2/*.log; do
: > "$file"
done
Run Code Online (Sandbox Code Playgroud)
或单线版
for file in /var/log/apache2/*.log; do : > "$file"; done
Run Code Online (Sandbox Code Playgroud)
如果需要递归到子目录中,则可以使用以下两个选项:
shopt -s globstar; for file in /var/log/apache2/**.log; do : > "$file"; done
Run Code Online (Sandbox Code Playgroud)
find /var/log/apache2 -type f -name "*.log" -exec sh -c 'for f; do : > "$f"; done' _ {} +
Run Code Online (Sandbox Code Playgroud)