假设我有200个目录,并且它具有可变的层次结构子目录,如何使用带有find或任何组合的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' '{}' \;
在这里,我们可以控制目录/文件和详细程度。您的计算机上是否可能需要在{}周围加上引号(反斜杠;;之前相同,但可能会被引号代替)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。