我正在尝试编写一个 shell 命令,我可以在其中指定一个目录,然后其中的每个文件和目录都会将每个单词的首字母大写。所以
/doCumenTS/tesT.txt
应该改为
/DoCumenTS/TesT.txt
我觉得应该这样开始
for i in directory do
tr something_goes_here
done
我想不通的问题是如何只做第一个字母。我制作了一个将整个文件名大写的脚本,但我不知道如何只获取每个单词的第一个字母。
谢谢!
最佳答案
使用 GNU Sed
您可以使用 GNU sed 轻松完成此操作。例如:
$ echo '/doCumenTS/tesT.txt' | sed 's!/.!\U&!g'
/DoCumenTS/TesT.txt
限制
请注意,\U 转义符是 GNU sed 扩展。手册说:
Finally, as a GNU 'sed' extension, you can include a special sequence made of a backslash and one of the letters 'L', 'l', 'U', 'u', or 'E'.
`\U'
Turn the replacement to uppercase until a `\L' or `\E' is found
关于bash - 将 Shell 中文件名或目录中每个单词的首字母大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370860/