我遇到了一个奇怪的问题。我试图ls -l *.xml
在特定目录中执行一个,但是当我这样做时,我收到了消息
ls: invalid option -- .
Try ls --help' for more information.
如果我执行类似ls -l *.php
或的操作ls -l *.txt
,它会在收到上述无效选项消息的同一目录中正常工作。令我更奇怪的是,如果我ls -l *.xml
在任何其他目录中执行此操作,它会正常工作,并且不会像在一个目录中那样给出无效选项消息。
我尝试ls -l *.xml
以 root 和正常登录身份在目录中执行此操作,但出现相同的无效选项消息。
type ls
ls is aliased to `ls --color=tty'
which ls
alias ls='ls --color=tty'
/bin/ls
whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
我是不是疯了?哪里出了问题?为什么ls -l *.xml
在一个目录中不起作用,而在其他目录中却能正常工作?
编辑:
尝试将 ls -l 管道传输到 grep,但出现此错误。不确定为什么我需要将其管道传输到 grep,因为ls -l *.xml
在任何其他目录中都可以正常工作。以前从未需要对其进行 grep。
ls -l | grep .xml
grep: invalid option -- .
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
答案1
由于*.xml
glob 将扩展到.xml
当前目录中的所有文件,因此我假设 glob 将扩展为解析为的内容
ls -l -- .....
或类似的,即以 开头的文件--
。
尝试通过使用 进行简单列表来找出该文件是什么ls -la
。
尝试使用 删除该文件rm -- --filename
—--
如果您希望文件名不被解析为选项,则需要 。或者,您可以从 GUI 中删除它,或者使用rm "--filename"
。
答案2
尝试一下ls -l | grep .xml
。我不确定像 ls -l *.xml 这样的东西如何工作,因为我的印象是,如果你试图将结果缩小到单个文件格式,通常管道和 grep 会有所帮助。