我们在Linux服务器上运行subversion.当他们需要全部小写时,我们组织中的某人用大小写混合了约3k文件.
这适用于CLI
rename 'y/A-Z/a-z/' *
Run Code Online (Sandbox Code Playgroud)
但显然会搞砸颠覆.
svn rename 'y/A-Z/a-z/' *
Run Code Online (Sandbox Code Playgroud)
不起作用,因为subversion处理重命名我猜.那么我怎么能做这个批处理工作呢?我很熟悉CLI,所以请解释一下我就像你的父母一样.手动重命名所有3k文件不是我想要承担的任务.
谢谢
for src in *; do
dst=$(echo "$src" | tr '[A-Z]' '[a-z]')
[ "$src" = "$dst ] || svn rename "$src" "$dst"
done
Run Code Online (Sandbox Code Playgroud)
这个怎么运作:
||非常常见.如果你需要递归,你可以创建一个小脚本svn-lowername.sh(上面的一个小变体):
#!/bin/bash
for src; do
dst=$(echo "$src" | tr '[A-Z]' '[a-z]')
[ "$src" = "$dst" ] || svn rename "$src" "$dst"
done
Run Code Online (Sandbox Code Playgroud)
一定要chmod +x svn-lowername.sh.然后执行:
find -name .svn -prune -o -type f -print0 | xargs -0 ./svn-lowername.sh
Run Code Online (Sandbox Code Playgroud)
如果您认为这个问题可能会再次发生,svn-lowername.sh请将您的路径隐藏在某个地方(~/bin/可能是一个好地方),然后您可以./在运行它时丢失该前缀.
你也可以svn-lowername.sh像这样在一个目录上使用:
./svn-lowername.sh *
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3142 次 |
| 最近记录: |