如何解决GNU 查找,使用 -exec 保持 {} 不变
我一直在尝试用命令替换 {}
文件的内容。
问题是,如果文件自早上 6 点以来没有更改,我想这样做,所以我正在使用此命令:
sudo find /path/to/file -type f ! -newermt '06:00:00' -exec echo "{}" > '/path/to/file' \;
问题是,使用 find 命令时,{}
被替换为已找到的文件路径,我尝试使用引号、双引号或反斜杠,但我无法得到它正常工作...
有人知道正确的语法吗?
谢谢
解决方法
使用 GNU coreutils echo
命令,您可以使用这样的字符编码:
sudo find /path/to/file -type f ! -newermt '06:00:00' \
-exec echo -e "\\0173\\0175" > '/path/to/file' \;
说明:我们对花括号使用八进制 ascii 代码,对 '{' 使用 \\0173
,对 '}' 使用 \\0175
以及 -e
的标志 echo
命令。这样,find
将看不到放置找到的文件名的模式,echo
命令将输出花括号 ('{}')。
至少在 GNU find 我找不到停止用路径替换 {}
的方法。因此,您的问题归结为 »*How to print {}
without using the substring "{}
"*«.
以下是一些可以在 find -exec
中使用的示例:
printf %s%s\\n { }
sh -c 'echo {""}'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。