linux - 如何在 linux 中递归重命名目录和子目录?

标签 linux bash shell directory

假设我有 200 个目录并且它有可变的层次结构子目录,我如何使用带查找的 mv 命令或任何组合来重命名目录及其子目录?

for dir in ./*/; do (i=1; cd "$dir" && for dir in ./*; do printf -v dest %s_%02d "$dir" "$((i++))"; echo mv "$dir" "$dest"; done); done

这是用于 2 级子目录,是否有更清晰的方法来实现多层次结构?欢迎任何其他单行命令建议/解决方案。

最佳答案

我有一项特定任务 - 替换目录和文件中的非 ASCII 符号和方括号。它工作正常。

首先,作为一个工作示例,正是我的情况:

find . -depth -execdir rename -v 's/([^\x00-\x7F]+)|([\[\]]+)/\_/g' {} \;

或单独的非ascii和括号:

find . -depth -execdir rename -v 's/[^\x00-\x7F]+/\_/g' {} \;
find . -depth -execdir rename -v 's/[\[\]]+/\_/g' {} \;

如果我们只想处理目录,请添加 -type d(在 -depth 选项之后)

现在,从更广义的角度来看:

find . -depth [-type d] [-type f] -execdir rename [-v] 's/.../.../g' '{}' \;

在这里我们可以控制目录/文件和详细程度。 {} 周围的引号可能需要也可能不需要(在 ; 之前的反斜杠 ; 服务相同,可以用引号代替)

关于linux - 如何在 linux 中递归重命名目录和子目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43134407/

相关文章:

linux - 使用 sed 在模式后添加文本,但添加的文本来自列表文件

linux - 通过参数字符串查找进程

python - repr 足以防止 Python 中的 shell 注入(inject)吗?

linux - 如何使用 bash 脚本或终端从 ubuntu 卸载所有 USB 笔式驱动器?

shell - 用制表符替换所有前 4 个空格

python - 使用Sqoop并行导入Oracle表的最佳方法是什么?

bash - 在子 shell 执行调用期间无法转义变量保留字符串中的引号

php - Apache 文件所有权/组

c - 我在哪里可以获得有关 C 语言返回调用的说明/手册页?

linux - 意外标记 `fi' 附近出现语法错误(运行脚本)