Linux GNU查找,保持{}与-exec相同
我一直试图用命令将文件内容替换为Linux GNU查找,保持{}与-exec相同,linux,bash,Linux,Bash,我一直试图用命令将文件内容替换为{}。 问题是,如果文件从早上6点起就没有更改,我想这样做,所以我使用以下命令: sudo find /path/to/file -type f ! -newermt '06:00:00' -exec echo "{}" > '/path/to/file' \; 问题是,使用find命令,{}被替换为已找到的文件的路径,我尝试使用引号、双引号或反斜杠,但无法使其正常工作 有人知道正确的语法吗 感谢使用GNU coreutilsecho命
{}
。
问题是,如果文件从早上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-类型f-新学期'06:00:00'\
-exec echo-e“\\0173\\0175”>”/path/to/file'\;
说明:我们使用八进制ascii码表示花括号,
\\0173
表示“{”,而\\0175
表示“}”,带有-e
标志的echo
命令。这样,find
将看不到放置找到的文件名的模式,echo
命令将输出大括号(“{}”)。至少在GNU find中,我找不到停止用路径替换{}
。因此,您的问题归结为»*如何在不使用子字符串“{}
”*«的情况下打印{}
下面是一些可以在find-exec
中使用的示例:
printf %s%s\\n { }
为什么要使用双反斜杠?”
对于bash,您可以
“这与bash无关find-exec
不使用bash,而是直接从$PATH
@oguzismail“\\”调用二进制文件echo
。@没错,echo命令不是bash内置的。我应该用GNU coreutils echo
说明。我会编辑。你知道,'/path/to/file'
重定向find的输出,而不是echo的输出,对吗?我建议你用“GNU find,keep{}作为-exec”更新你的问题标题,这样其他人就更容易在上面找到问题。(令人惊讶的是,这个问题似乎直到现在才被问到…@oguzismail事实上,不,我不知道,你知道我如何使它重定向echo的输出吗?请参阅我对Socowi答案的评论。)。如果您仍然有问题,请相应地编辑您的问题并告诉我们。sh-c'echo{\}>/path/to/file'
也会这样做,并以超级用户权限打开/path/to/file
(注意sudo
)。我不知道OP用那个命令在做什么。
sh -c 'echo {""}'