重命名目录
Renaming directories
我有大约 230 个此类目录 (1367018589_name_nameb_namec_named),想将它们重命名为 (Name Nameb Namec Named)。
更准确地说:
- 删除号码
- 用空格替换下划线(数字后面的第一个下划线除外)
- 第一个字母变成大写字母
首选简单的一行,因为我在 Linux 和 bash 方面是个新手。
Bash 脚本也不是问题 - 非常感谢您对如何使用它做一个简短的解释。
这意味着一旦我知道了命令我就能理解,但是我自己想出问题来了。
非常感谢andvance
在一行中(更新为每个单词的第一个字母大写——第一次错过了):
$ for f in * ; do g=$(echo $f | sed s/[0-9_]*// | sed s/_/\ /g | sed "s/\b\(.\)/\ug") ; echo "mv \"$f\" to \"$g\"" ; done
一旦你对它会做你想做的事情感到高兴改变
echo "mv \"$f\" to \"$g\""
到
mv -i "$f" "$g"
注意,-i
选项是为了避免意外覆盖文件的情况(例如,如果您有文件 123_test
和 345_test
)
我有大约 230 个此类目录 (1367018589_name_nameb_namec_named),想将它们重命名为 (Name Nameb Namec Named)。
更准确地说:
- 删除号码
- 用空格替换下划线(数字后面的第一个下划线除外)
- 第一个字母变成大写字母
首选简单的一行,因为我在 Linux 和 bash 方面是个新手。 Bash 脚本也不是问题 - 非常感谢您对如何使用它做一个简短的解释。 这意味着一旦我知道了命令我就能理解,但是我自己想出问题来了。
非常感谢andvance
在一行中(更新为每个单词的第一个字母大写——第一次错过了):
$ for f in * ; do g=$(echo $f | sed s/[0-9_]*// | sed s/_/\ /g | sed "s/\b\(.\)/\ug") ; echo "mv \"$f\" to \"$g\"" ; done
一旦你对它会做你想做的事情感到高兴改变
echo "mv \"$f\" to \"$g\""
到
mv -i "$f" "$g"
注意,-i
选项是为了避免意外覆盖文件的情况(例如,如果您有文件 123_test
和 345_test
)