1

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

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

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

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

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

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

4

1 回答 1

0

你这样做是不对的。而不是rename something something *,您需要使用 xargs 传入 find 的输出,如下所示:

rootcmd -s sh -c "find . -type f | grep '|' | xargs rename '|' '!'"
于 2013-11-01T23:24:48.253 回答