【发布时间】:2021-02-17 12:07:10
【问题描述】:
给定文件和文件夹结构:
test
├── a
│ └── hans.x
├── b
│ └── hans.x
└── c
└── hans.x
我想使用单行 bash 命令将所有文件“hans.x”重命名为“peter.x”。
期望的结果:
test
├── a
│ └── peter.x
├── b
│ └── peter.x
└── c
└── peter.x
我查看了很多关于 SO 的解决方案,发现很多解决方案展示了如何将文件“peter.x”重命名为“peter.x_somethingmore”,但从未出现上述情况。
我尝试了以下方法:
find . -type f -name 'hans.x' -print0 | xargs --null -I{} mv {} "$(dirname "{}")"peter.x
但不幸的是,这会导致以下执行:
mv ./test/a/hans.x .peter.x
mv ./test/c/hans.x .peter.x
mv ./test/b/hans.x .peter.x
【问题讨论】:
-
您是否考虑过使用脚本(例如 python)来完成这项任务? Bash 的语法很粗糙
-
@anon01 考虑过python,但我更喜欢使用内置的bash命令来完成这样一个简单的任务,而不是编写脚本。
标签: bash rename subdirectory