linux - 从所有子目录中的所有 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
这在子目录中也不起作用,只是文件在基目录中
解决方案
你可以使用这个 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)
一旦您对结果感到满意,请echo
在mv
命令之前删除。
推荐阅读
- c# - 使用对象作为键时.Net MemoryCache Miss
- php - php-curl 重定向后不发送授权标头
- javascript - Javascript - 如果没有 setInterval 函数,这个时钟函数如何更新时间?
- jquery - 右对齐工具提示
- matlab - matlab 中有没有办法将包含表格的 .mat 文件加载为 tall 数组?
- c# - 灰度像素/值关系
- python - python从正则表达式捕获
- javascript - 如何用javascript替换一个值
- html - 如何在 html 的标题中设置 favicon 的样式
- html - CSS-GRID 行高问题