$ ls -l
-rw-r--r--@ 1 ywang Users 6156 Aug 16 14:38 -STEST.20140728.151116.pgp
-rw-r--r--@ 1 ywang Users 2756 Aug 16 14:38 -STEST.20140728.152042.pgp
-rw-r--r--@ 1 ywang Users 3424 Aug 16 14:38 -STEST.20140729.141735.pgp
-rw-r--r--@ 1 ywang Users 2439 Aug 16 14:38 -STEST.20140729.142515.pgp
-rw-r--r--@ 1 ywang Users 2672 Aug 16 14:38 -STEST.20140730.125115.pgp
-rw-r--r--@ 1 ywang Users 2391 Aug 16 14:38 -STEST.20140730.125556.pgp
嗨,我尝试了多种方法,例如:循环遍历文件并逐个执行mv
。但是,我并不成功,因为需要注意的是mv
将前导破折号解释为自身的参数,并且当与通配符*
结合使用时,反斜杠转义似乎不起作用。
有什么想法可以在Bash的oneliner中完成吗?谢谢!
答案 0 :(得分:5)
您可以使用:
for i in ./-*; do mv "$i" "${i#*-}"; done
将./-*
用于globbing非常重要,这样shell就不会将-
解释为命令选项。