ls *.pdf 抱怨:ls:无效选项——‘_’

ls *.pdf 抱怨:ls:无效选项——‘_’

我习惯在 Linux Mint 中使用“ls”,例如“ls *.pdf”,但在这个 Debian 版本中,“ls.pdf' 抱怨。我发现自己使用长度'find -maxdepth 1 -type f -name".pdf” -print”。

正在读此文:ls 工作异常没有太大帮助。我确实有 bash_completions 包,并且我的 '~/.bashrc' 文件中没有 'ls' 的奇怪别名 - 我从不编辑 '/etc/profile' 或全局文件,无论它在哪里。

只是猜测,我确实应用了链接问题中的解决方案,但没有奏效。我不完全理解“complete”——我猜它是“readline”的一部分——所以也许简短的解释也会有所帮助(它没有“man”页面)。

但是这个有效:'complete -p ls *.pdf',其中'complete --help'表示,

 -p        print existing completion specifications in a reusable format

所以我想知道我是否应该永久应用这个“规则”?使用'-D'标志......?

编辑

刚刚也注意到了这个问题:

for f in *.pdf; do mv "$f" "BOOK - $F"; done

mv: invalid option -- 'R'

编辑2

我尝试了上述两个命令,它们在我的操作系统分区上工作正常。问题是,当我移动到不同的分区时,上面有正在运行的 Linux Mint 和我想要修改的 pdf 文件,这些命令会失败。两个分区都是 ext4,都具有相同的用户名、主机名、UID/GID、权限等。

答案1

看起来您的文件名以破折号开头-,因此使用:

for f in *.pdf; do mv -- "$f" "BOOK - $F"; done

man bash

A--表示选项结束并禁用进一步的选项处理。-- 后面的任何参数都被视为文件名和参数。- 的参数相当于 --。

答案2

如果您的文件名以(减号或连字符)开头-,许多程序会将它们解释为选项。

您可以./在路径前面添加以下内容以避免这种情况:

ls ./*.pdf

许多程序还允许--在文件名参数前插入以表示选项的结束:

ls -- *.pdf

当然,建议用户采取的方法是重命名文件。

相关内容