一个带有一点sed的简单for循环可以解决这个问题:
原文链接:https://www.f2er.com/bash/385850.html% touch xxxxx{foo,bar,baz} % ls -l xxxxx{foo,baz} -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 xxxxxbar -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 xxxxxbaz -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 xxxxxfoo % for file in xxxxx*; do mv $file $(echo $file | sed -e 's/^.....//'); done % ls -l foo bar baz -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 bar -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 baz -rw-r--r-- 1 jamesog wheel 0 29 Dec 18:07 foo@H_403_8@sed中的替换regex表示匹配字符串开头的任意五个字符(.表示任何字符)(^)并将其删除.