在基本目录中我有这样的文件夹:
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
这也不适用于子目录,只是文件位于基目录
中答案 0 :(得分:2)
你可以使用while 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
。
答案 1 :(得分:0)
如果文件名都具有相同的模式,您可以通过这种方式剪切字符:
$ file='0010031.mp3'
$ cut -c4-6,8- <<< "$file"
003.mp3