我需要更改上千个目录和子目录的名称,将名称的最后9个字符删除。这最后9个字符以“it”开头。
示例:193- 105 kg-dal-brasile-it 8 petfo 7至193- 105 kg-dal-brasile
我尝试了以下命令:
find /Users/myuser/Downloads/damod -type d -iname '*' mv "$i" "${i:50: -2}"
我用的是OSX,我安装了Brew。我非常感谢任何帮助。
我已经看到了建议的情况下,insted在文章中保持最后一个carachter与此公式(.{48}$),我的情况是不是一个重复的感谢
4条答案
按热度按时间carvr3hs1#
将
find
与sed
和xargs
一起使用:对于成千上万的文件,您可以使用
xargs -P
开关来启用并行处理。使用多达4个并行进程的示例:--或--
使用
find
和bash进程替换来循环目录并重命名它们:注意:OP表示希望删除尾随的9个字符,但OP的示例显示删除了10个字符(包括原始示例目录名称中的最后一个'-')。
示例脚本:
输出:
r6hnlfcb2#
Bash有变量替换,你可以用途:
上面的命令实际上并不重命名。它只是显示了动作。如果输出看起来不错,那么您可以删除“echo”部分,并将其重新命名为真实的。
${f/%-it*/}
表达式表示 * 搜索suffix(由%符号表示)“-it*”并将其替换为nothing(第二个正斜杠后面没有文本)。juzqafwq3#
一个建议是使用locate:
1 -查找目录:
2 -使用grep搜索以“it”结尾的行:
3 -读取每个目录:
4 -通过删除最后9个字符获得目录的新名称:
5 -重命名目录:
例如:
脚本代码:
ie3xauqp4#
Homebrew提供Perl rename:
rename
将在新名称的内容已经存在时发出抱怨。