linux - 重命名多个目录匹配模式

标签 linux bash

我想重命名 basedir 下与名称匹配的所有目录。例如:

basedir/ 中,我有:

- foo/bar/blah
- my/bar/foo
- some/bar/foo1
- other/foo/bar

我想重命名所有匹配 bar 的目录,但我想保留前缀部分。

使用 find,我可以轻松地列出所有目录,如下所示:

find . -name repositoryunit -type d

但是,我如何使用 -exec mv {} ...(或者可能与另一个应用程序结合使用)以便保留前缀?

非常感谢!

最佳答案

find . -depth -name bar -type d -execdir mv {} baz \;

-execdir 在执行命令之前将目录更改为父目录,因此此处的 mv 对于每个父目录都是本地的。

关于linux - 重命名多个目录匹配模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18027799/

相关文章:

linux - 递归查找目录并在 Shell 脚本中重命名

linux - 将输出放入下一个管道

c - 有没有办法将 stderr 重定向到在 bash、csh 和 dash 中工作的文件?

linux - bash for循环获取文件内容写入另一个文本文件

linux - 如何更新 tar(不附加)

linux - TCP 奇怪的 RST 数据包终止连接

linux - Linux Shell脚本中for循环的语法

bash - 通过bitbucket ssh管道执行时找不到docker命令

适用于 Linux 的 Windows 资源编辑器

linux - 在 bash 中查找文件失败