Kong Asked: 2020-12-01 06:29:49 +0800 CST2020-12-01 06:29:49 +0800 CST 2020-12-01 06:29:49 +0800 CST 通过删除子字符串重命名文件夹 772 我有一个文件夹列表video_0001 video_0002 video_0003...如何将它们全部重命名为0001 0002 0003...?我试过了 mv video_{0001..0003} {0001..0003}但它不起作用 rename 3 个回答 Voted Best Answer Terrance 2020-12-01T06:42:59+08:002020-12-01T06:42:59+08:00 您可以for通过从每个文件的第 7 个字符开始(记住从 0 开始计数)并保存每个文件的最后 4 个字符来循环执行此操作。 for f in video_*; do mv $f ${f:6:4}; done Pilot6 2020-12-01T06:35:11+08:002020-12-01T06:35:11+08:00 安装rename方式 sudo apt install rename 并运行 rename s/video_// * steeldriver 2020-12-01T11:26:29+08:002020-12-01T11:26:29+08:00 为了完整性: 与mmv(来自包mmv): mmv -n 'video_*' '#1' zsh和_zmv zsh autoload zmv zmv -n 'video_(*)' '$1' 在上述两种情况下,-n一旦您对它在做正确的事情感到高兴,就将其删除。 更便携的 shell 循环: for f in video_*; do echo mv "$f" "${f#*_}"; done 删除echo类似的。注意#*_删除最短前缀;在您希望删除最长前缀的情况下,例如my_long_video_1234更改为##*_.
您可以
for
通过从每个文件的第 7 个字符开始(记住从 0 开始计数)并保存每个文件的最后 4 个字符来循环执行此操作。安装
rename
方式并运行
为了完整性:
与
mmv
(来自包mmv
):zsh
和_zmv
在上述两种情况下,
-n
一旦您对它在做正确的事情感到高兴,就将其删除。更便携的 shell 循环:
删除
echo
类似的。注意#*_
删除最短前缀;在您希望删除最长前缀的情况下,例如my_long_video_1234
更改为##*_
.