非法选项 -- 1 在 xargs shell 命令的命令中



我有一些文件需要重命名。我尝试使用 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'{}'

注意:您可以在xargs中使用-t标志来查看正在执行的命令。可能会使调试更容易。

man bash

除非另有说明,否则本节中记录的每个内置命令都接受选项前面有-接受--以表示选项的结束

:truefalsetest内置不接受选项,也不特别对待--exitlogoutbreakcontinueletshift内置接受和处理以-开头的参数,而无需--。其他接受参数但未指定为接受选项的内置将-开头的参数解释为无效选项,并要求--来防止这种解释。

请注意,echo不会将--解释为选项的结束。

最新更新