ls *.pdf жалуется: ls: неверный параметр - '_'

Я привык использовать 'ls' так же, как в Linux Mint, например, 'ls *.pdf', но в этом варианте Debian 'ls .pdf' жалуется. Вместо этого я использую длину 'find -maxdepth 1 -type f -name ".pdf" -print'.

Чтение этого: странная работа не слишком помогает. У меня есть пакет bash_completions, и у меня нет странных псевдонимов для 'ls' в моем файле ~/.bashrc - я никогда не редактирую /etc/profile или глобальный, где бы он ни находился.

Просто догадываясь, я применил решение в связанном вопросе, но оно не сработало. Я не полностью понимаю "завершено" - я думаю, что это часть "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, разрешения и т. Д.

2 ответа

Решение

Кажется, у вас есть имена файлов с лидирующей чертой -так что используйте:

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

От man bash:

-- сигнализирует об окончании параметров и отключает дальнейшую обработку параметров. Любые аргументы после - обрабатываются как имена файлов и аргументы. Аргумент - эквивалентен -.

Если у вас есть имена файлов, которые начинаются с - (минус или дефис), многие программы интерпретируют их как параметры.

Вы можете подготовить ./ на путь, чтобы избежать этого:

ls ./*.pdf

Многие программы также позволяют вставлять -- перед аргументами имени файла, сигнализирующими об окончании опций:

ls -- *.pdf

Рекомендуемый подход для пользователей - конечно, переименовать файлы.

Другие вопросы по тегам