gpt4 book ai didi

linux - Bash:与查找一起使用时,重命名命令不适用于子目录

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:36 25 4
gpt4 key购买 nike

我有以下命令删除第一次出现的“|”从文件名中替换为“!”。

rootcmd -s sh -c "find . -type f | grep '|' | rename '|' '!' *"

当从与它操作的文件相同的目录运行时,它工作正常。我们称其为子目录。但是,我有一个包含多个子目录的父目录。当我从父目录运行它时,重命名不起作用。我想让它遍历所有的子目录并做同样的操作。有趣的是,我知道命令的第一部分(减去重命名)有效:

rootcmd -s sh -c "find . -type f | grep '|'"

以上将返回所有带有“|”的子目录中的所有文件在文件名中。但是,当我附加重命名命令时,它不会按预期重命名文件。

有没有 linux/bash 专家可以解释或解决这个问题?

最佳答案

你做错了。您需要使用 xargs 传递 find 的输出,而不是 rename something something *,如下所示:

rootcmd -s sh -c "find . -type f | grep '|' | xargs rename '|' '!'"

关于linux - Bash:与查找一起使用时,重命名命令不适用于子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19736976/

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