这是我的问题:
我有一个名为 -r 的文件:-r.jpg
当我尝试做时,mv *.jpg old/
我得到了:
mv: invalid option -- 'r'
即使是
for g in *.jpg;do echo $g &&mv "${g}" old/;done
我也有同样的错误。
答案1
大多数命令行实用程序都提供了单独的选项从参数。
这可以防止出现许多问题“特别的”看起来像选项的文件名。
表示选项结尾的最常见分隔符是两个连字符--
或 ,--这也受 的支持mv
。
换句话说:
mv [OPTIONS] -- SOURCE DEST
或者由于您没有指定任何选项:
mv -- *.jpg old/
答案2
最简单的解决方案是在文件名前面添加./
描述相对路径
for g in *.jpg; do echo $g && mv "./${g}" old/; done
也可以使用绝对路径
for g in $(pwd)/*.jpg; do echo $g && mv $g old/; done
或者,您可能想要使用该find
命令,因为它已经提供了相对路径(--max-depth
如果您只想处理当前目录,则可以使用)
for g in $(find . -name "*jpg"); do mv $g old; done
在最坏的情况下,如果你有许多复杂的无法解析的字符,你可以参考 inode 编号并find -inum
相应地处理你的文件
$ for g in $(ls -i1 ./*jpg | cut -f1 -d' '); do find . -inum $g -print0 | xargs -0 -I '{}' mv '{}' old; done