Внутреннее расширение с помощью команды find и символа подстановки

Я все еще изучаю командную строку, и у меня возникают некоторые проблемы с полным пониманием использования подстановочного символа в команде find.

Я работаю в каталоге user / temp и использую команду find, как показано ниже, чтобы найти все .txt-файлы:

find . -name *.txt -print 

Это дает мне ошибку:

 find: unknown primary or operator. 

Я знаю, что вам нужно использовать одинарные кавычки вокруг *.txt , чтобы избежать расширения и получить желаемый результат; однако я не понимаю, почему это нужно сделать.

Я читал, что вам нужно избегать * чтобы find внутреннее расширение. Я смущен, потому что думал, что использование одиночных кавычек вокруг * даст команду командной строки не интерпретировать ее как специальный символ, так как происходит расширение?

2 Solutions collect form web for “Внутреннее расширение с помощью команды find и символа подстановки”

Здесь есть две части, которые могут попытаться развернуть * : оболочку, когда она вызывает find или find поскольку она обрабатывает / использует свои аргументы.

Если вы не сделаете одинарной кавычки, оболочка расширит его, поэтому, если у вас есть a.txt и b.txt в текущем каталоге, ваша командная строка будет расширяться из

 find . -name *.txt -print 

в

 find . -name a.txt b.txt -print 

который не является действительной командой find

Если вы укажете одну цитату, вы сообщите оболочке оставить ее в покое, поэтому find получит строку *.txt в качестве аргумента для -name и будет использовать ее, как при сопоставлении потенциальных имен.

Вы можете попробовать двойное цитирование имени файла.

найти . -name "* .txt" -print

Это работает в моей системе (Debian 8)

  • GDB не может выполнить мою тестовую программу
  • как группировать информацию в первом файле на основе информации из второго файла?
  • команда, которая работает как символ ~ (тильда) для представления некоторого каталога
  • dirname и basename против расширения параметров
  • Существует ли простой способ ограничения числа дочерних процессов, выполняемых параллельно?
  • Как я могу переслать уже пересылаемый ssh-ключ в tmux?
  • Пользователь Admin не показывает путь к папке в консольной строке, только $
  • В bash, grep для строки, начинающейся с \, и присваивания результата с помощью обратных шагов
  • Трубопровод с grep и найти отпечатки числа перед результатом
  • SSH для сервера, а также команды выполнения и печати
  • Как изменить оболочку по умолчанию на ZSH - chsh говорит «Недопустимая оболочка»
  • Interesting Posts

    awk для замены столбцов и печати, если условие выполнено

    Могу ли я имитировать утилиту tee, используя дополнительные файловые дескрипторы?

    Как запомнить пароль ssh с помощью lsyncd?

    Настроить add-to-tranmission-daemon-action в firefox?

    Как создать временное видео из неподвижных изображений с определенным временем между каждым изображением?

    Клавиатура с анти-ореолом (NKRO over USB)

    Каковы команды для применения изменений, внесенных в / etc / ssh / sshd_config?

    Как создать скрипт с обратным действием

    Как принудительно использовать общие сочетания клавиш / макросов для всей системы?

    Доступность программного обеспечения во время обновления?

    OpenSSH-Server: как я могу удаленно установить заголовок окна боковой панели клиента?

    Каков шрифт виртуального терминала по умолчанию?

    Является ли `rm -rf` не атомным?

    Как написать сценарий оболочки для запуска нескольких команд в разных сеансах экрана?

    Частота слов в тексте на неанглийском языке: как я могу объединить единичные и множественные формы и т. Д.?

    Linux и Unix - лучшая ОС в мире.