Я только что обновил iTerm2 до версии Build 3.0 .14
и столкнулся с этой проблемой. Команда ls
из coreutils больше не встречалась на моем пути. После запуска:
brew install coreutils
и открытия новой оболочки проблема была устранена. В моем ~ / .bashrc есть следующий псевдоним:
export LS_OPTS='--color=auto'
alias ls='ls ${LS_OPTS}'
Я бы использовал find
для каждого каталога по очереди и перенаправлял его на grep -q.
, чтобы проверить, есть ли какие-либо результаты, и вывести имя каталога при условии, были ли результаты какие-либо:
for d in */; do find "$d" -type f -mtime -30 | grep -q . && printf %s\\n "$d"; done
Это может быть неэффективно:
find -mindepth 3 -maxdepth 3 -type f -mtime -30 |
xargs -n 1 dirname |
xargs -n 1 dirname |
uniq # (or sort -u, I assume find's output is already sorted)
find */ -type f -mtime -30 -print0 |
sed -z -e 's:/.*$::' |
sort -z -u |
tr '\000' '\n'
Требует GNU sort
и GNU sed
для опций -z
(ввод с разделителем NUL).
find
перечисляет все файлы в подкаталогах текущего каталога возрастом менее 30 дней. Вывод передается в sed
для удаления всего после первого /
, затем в sort
для уникальной сортировки полученных имен каталогов.