Существует ли $ mdls -recursive?
Может ли mdls
команда будет использоваться рекурсивно в терминале MacOS? Есть ли альтернатива, которая даст мне список всех файлов вместе со всеми mdls
Информация? ls
имеет возможность получить мне немного, но не так много, как mdls
,
Это следующий вопрос: в терминале macOS команды "ls | mdls" работают только для домашнего каталога.
1 ответ
Если вы используете globstar
Опция оболочки (Bash 4.0 или новее1), вы можете сделать что-то вроде этого:
shopt -s globstar
mdls -name kMDItemFSName -name kMDItemDateAdded **/*
Вывод будет выглядеть примерно так
kMDItemDateAdded = 2018-07-10 15:33:04 +0000
kMDItemFSName = "File1.txt"
kMDItemDateAdded = 2018-07-11 17:18:11 +0000
kMDItemFSName = "File2.txt"
с недостатком, что информация о пути теряется.
Если у вас много-много файлов, в результате чего командная строка становится слишком длинной, вы можете вместо этого перебирать файлы:
for f in **/*; do
printf '%s\t%s\n' "$f" "$(mdls -name kMDItemDateAdded "$f")"
done
с выводом, который выглядит примерно так
File1.txt kMDItemDateAdded = 2018-07-10 15:33:04 +0000
File2.txt kMDItemDateAdded = 2018-07-11 17:18:11 +0000
или вы могли бы использовать find
:
GNU
find
:find -printf '%p\t' -exec mdls -name kMDItemDateAdded {} \;
BSD
find
:find . -exec printf '%s\t' {} \; -exec mdls -name kMDItemDateAdded {} \;
1 Который в macOS сначала нужно установить, например, с помощью Homebrew.