Содержит ли * скрытые файлы в tar, даже если dotglob не установлен?

У меня создалось впечатление, что * glob не соответствует файлам с префиксом dot-prefixed, если вы вручную не включите такую ​​функциональность (через dotglob или эквивалент вашей оболочки).

Но если у меня есть каталог, содержащий файлы file1 и .hidden1 , тогда, если я это сделаю

 tar -cvpjf backup.tar.bz2 --exclude 'a/*' a 

результирующий файл tar содержит только пустой каталог a и никакой след ни скрытого, ни скрытого файла. Мое предположение было бы исключено только из не скрытого file1 .

Что здесь происходит?

One Solution collect form web for “Содержит ли * скрытые файлы в tar, даже если dotglob не установлен?”

Во-первых, поскольку вы вложили подстановочный знак в одинарные кавычки, он расширяется с помощью tar вместо оболочки, поэтому его опция dotglob не будет иметь никакого эффекта.

tar ' * wildcard соответствует всем, включая точки и слэши (как указано в найденной документации ), поэтому вам придется исключать файлы, начиная с точки от исключения :

 tar -cvpjf backup.tar.bz2 --exclude 'a/[^.]*' a 
  • Восстановить поврежденный .tar, сохраненный с Android
  • busybox tar или разделить большой файл на несколько файлов меньшего размера
  • Коррумпированные файлы после извлечения с помощью GNU tar Cywin
  • debootstrap завершается частично через "stdin: не в сжатом формате"
  • Извлечение каталога из stdout из wget
  • использование случайных в tar для распаковки файлов
  • tar выходы с bzip2: (stdin): конечный мусор после EOF игнорируется после извлечения
  • ошибка разрушенной трубы
  • установить уровень сжатия с помощью nice и tar
  • Безопасно ли использовать tar, даже если в именах файлов и путях есть некоторые символы, отличные от ASCII?
  • Почему конкретная последовательность вариантов имеет значение для команды tar?
  • Linux и Unix - лучшая ОС в мире.