> Так почему же apache может открыть этот каталог (dir1)?
У меня нет ответа на этот вопрос, обычно он не может этого сделать.
> Можно ли создать группу в группе?
Нет, в Linux все члены группы должны быть пользователями.
> Или сделать группу владельцем каталога?
Да, вы можете назначить владение каталогом пользователю и группе с помощью команды chmod myuser: mygroup mydir
. «Групповые» разрешения каталога будут применяться ко всем пользователям, которые являются членами этой группы.
попробуй
find. -name \*.pdf -print
это должен быть список pdf, например
myfolder/foo/doc1.pdf
myfolder/bar/foo/doc2.pdf
обратите внимание, что *
в *.pdf
необходимо экранировать, если в начальном каталоге есть PDF-файл.
ls -R *.pdf
будет рекурсивно вызывать ls
для всего, что соответствует *.pdf
(, если в текущем каталоге нет ничего, совпадающего с *.pdf
, вы не получите результата, а если есть, он будет рекурсивно обращаться к нему только в том случае, если это каталог ). ls -R | grep pdf
покажет вам в результате ls -R
все, что соответствует регулярному выражению pdf
, а это не то, что вам нужно.
Это то, что вам нужно:
find myfolder -type f -name '*.pdf'
Это даст вам пути ко всем обычным файлам(-type f
)в каталоге myfolder
или ниже, чьи имена файлов соответствуют шаблону *.pdf
. Шаблон должен быть заключен в кавычки, чтобы защитить его от оболочки.
С оболочкой zsh
(, которая недавно стала оболочкой по умолчанию в macOS):
print -rC1 myfolder/**/*.pdf(.ND)
Это распечатает пути ко всем обычным файлам в или ниже каталога myfolder
, имена которых заканчиваются на .pdf
, в одном столбце. Сопоставление будет включать скрытые имена. N
и D
в квалификаторе glob соответствуют настройке параметров оболочки nullglob
и dotglob
в оболочке bash
(, но только для этого единственного шаблона подстановки ), а точка делает шаблон соответствует только обычным файлам (, т.е. не каталогам и т. д.)
В собственной оболочке bash
, установленной на macOS
Терминале (версии 4 по крайней мере ), включите опцию расширенного шаблона globstar
, чтобы включить рекурсивное сопоставление шаблона во вложенных подкаталогах -.
shopt -s globstar nullglob
printf '%s\n' **/*.pdf
Параметр nullglob
предотвращает расширение шаблонов имен файлов, которые не соответствуют файлам, в нулевую строку, а не в самих себя. С globstar
шаблон **
, используемый в контексте расширения имени файла, будет соответствовать всем файлам и нулю или более каталогам и подкаталогам -.
Чтобы немного обезопасить себя, не устанавливая параметры оболочки в текущей оболочке, вы можете вместо этого установить ее в оболочке sub -
( shopt -s globstar nullglob; printf '%s\n' **/*.pdf ; )