我有一些文件需要重命名。我尝试使用xargs和mv命令,但出现错误
mv: illegal option -- 1
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
我的目录包含-1,-2,-3之类的文件
我使用的命令是
ls | xargs -I{} mv '{}' old'{}'
这里的问题是文件名以开头-
。大多数bash内置命令都将前面的任何内容-
视为命令的可选参数。您可以--
用来指示命令选项的结尾。例如,在此处,-1
将其作为mv
命令的参数。
您可以使用解决此问题
ls | xargs -I{} mv -- '{}' old'{}'
注意:您可以使用-t
flag inxargs
来查看命令正在执行。可能会使调试更容易。
从 man bash
除非另有说明,否则本节中记录为接受选项的每个内置命令均以
-
accepts--
开头,以表示选项的结尾。在
:
,true
,false
,和test
建宏不接受选项,并没有把--
特别。的exit
,logout
,break
,continue
,let
,和shift
内建接受并处理论点开始-
,而不需要--
。其他接受自变量但未指定为接受选项的内建函数-
将以无效选项开头的自变量解释为无效选项,并要求--
阻止这种解释。请注意,这
echo
并不--
意味着选项的结束。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句