我习惯在 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
当然,建议用户采取的方法是重命名文件。