Рекурсивный список файлов в OSX?

> Так почему же apache может открыть этот каталог (dir1)?

У меня нет ответа на этот вопрос, обычно он не может этого сделать.

> Можно ли создать группу в группе?

Нет, в Linux все члены группы должны быть пользователями.

> Или сделать группу владельцем каталога?

Да, вы можете назначить владение каталогом пользователю и группе с помощью команды chmod myuser: mygroup mydir . «Групповые» разрешения каталога будут применяться ко всем пользователям, которые являются членами этой группы.

2
24.03.2018, 13:29
3 ответа

попробуй

find. -name \*.pdf -print

это должен быть список pdf, например

myfolder/foo/doc1.pdf
myfolder/bar/foo/doc2.pdf

обратите внимание, что *в *.pdfнеобходимо экранировать, если в начальном каталоге есть PDF-файл.

1
27.01.2020, 21:58

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(, но только для этого единственного шаблона подстановки ), а точка делает шаблон соответствует только обычным файлам (, т.е. не каталогам и т. д.)

7
27.01.2020, 21:58

В собственной оболочке bash, установленной на macOSТерминале (версии 4 по крайней мере ), включите опцию расширенного шаблона globstar, чтобы включить рекурсивное сопоставление шаблона во вложенных подкаталогах -.

shopt -s globstar nullglob
printf '%s\n' **/*.pdf

Параметр nullglobпредотвращает расширение шаблонов имен файлов, которые не соответствуют файлам, в нулевую строку, а не в самих себя. С globstarшаблон **, используемый в контексте расширения имени файла, будет соответствовать всем файлам и нулю или более каталогам и подкаталогам -.

Чтобы немного обезопасить себя, не устанавливая параметры оболочки в текущей оболочке, вы можете вместо этого установить ее в оболочке sub -

( shopt -s globstar nullglob; printf '%s\n' **/*.pdf ; )
2
27.01.2020, 21:58

Теги

Похожие вопросы