首页 > 解决方案 > 从所有子目录中的所有 mp3 文件中删除前 3 个字符和后 1 个字符

问题描述

在基本目录中,我有这样的文件夹:

1
2
3
4
5
10
110

所以在他们每个人中我都有像

  0010011.mp3  0010031.mp3  0010051.mp3  0010071.mp3  0010021.mp3  0010041.mp3  0010061.mp3

所以我想删除前 3 个字符和最后 1 个字符,所以文件看起来像这样

 001.mp3   003.mp3   005.mp3   007.mp3   002.mp3   004.mp3  006.mp3

我试过这个

for file in ??????*; do echo mv $file `echo $file | cut -c4-`; done

这在子目录中也不起作用,只是文件在基目录中

标签: linuxbash

解决方案


你可以使用这个 while 循环:

cd /base/dir

while IFS= read -rd '' file; do
   echo mv "$file" "$(sed -E 's~(.*/).{3}(.+).\.~\1\2.~' <<< "$file")"
done < <(find . -type f -print0)

一旦您对结果感到满意,请echomv命令之前删除。


推荐阅读