Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux GNU查找,保持{}与-exec相同_Linux_Bash - Fatal编程技术网

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 {""}'