gpt4 book ai didi

linux - 将重定向符号与 find -exec 结合使用的更好方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:38 31 4
gpt4 key购买 nike

我的目标是清空目录中的每个文件。我不想真正删除该文件,我只想删除它的内容。

如果你想对单个文件执行此操作,你可以执行 > file.txt

如果我想对目录中的每个文件运行此操作,我可以这样做:

find . -exec /bin/bash -c '> {}' \;

注意上面的命令是如何调用 /bin/bash 的。这是因为只需像这样运行命令 find 。 -exec > {}\;find: invalid argument ;' to -exec' 我怀疑这是因为重定向符号混淆了命令。

我想运行此命令而不需要在 -exec 中运行 /bin/bash

如何做到这一点?

最佳答案

一个简单的方法是使用truncate:

find -type f -exec truncate -s0 {} +

如果你只想使用 bash,你可以使用 while 循环:

find -type f -print0 |
while IFS= read -r -d '' file; do
> "$file"
done

最后,如果您不介意使用bash -c,最好按如下方式操作,以避免多次调用bash:

find -type f -exec bash -c 'for file; do > "$file"; done' - {} +

虽然我不喜欢那个解决方案。

关于linux - 将重定向符号与 find -exec 结合使用的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627953/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com