Есть несколько различных способов сделать это, в зависимости от того, что вы хотите сделать с информацией.
Если вам нужен список каталогов, которые непосредственно содержат .pdf
файлы (т.е. только на верхнем уровне, не в подкаталогах), я бы сделал так:
dirname */*.pdf | sort | uniq
Если вам нужен список каталогов, содержащих файлы .pdf
на любом уровне (то есть они могут находиться в подкаталогах каталога), попробуйте
find . -name '*.pdf' | cut -d/ -f2 | sort | uniq
или, если вы хотите искать только в определенных подкаталогах,
find Abc Qwe Zxc Rty -name '*.pdf' | cut -d/ -f1 | sort | uniq
Если вам нужен список всех файлов .pdf
в подкаталогах, то это просто
find . -name '*.pdf'
Если вам нужен подсчет .pdf
файлов в каждом каталоге, для подсчета только файлов верхнего уровня я бы использовал
dirname */*.pdf | sort | uniq -c
или для включения файлов в подкаталогах
find . -name '*.pdf' | cut -d/ -f2 | sort | uniq -c
(вы можете увидеть разницу, просто добавив опцию -c
к uniq
).
При этомksh93
(часто устанавливается по умолчанию на коммерческих системах на основе SysV, таких как AIX или Solaris ), что также является /bin/sh
для Solaris 11 и более поздних версий:
date=2019-02-08T19:24:30.220Z
export LC_ALL=C # to make sure the decimal radix is "."
then_in_seconds=$(printf '%(%s.%N)T\n' "$date")
now_in_seconds=$(printf '%(%s.%N)T\n' now)
difference_in_seconds=$((now_in_seconds - then_in_seconds))
difference_in_24h_periods=$((difference_in_seconds / 24 / 60 / 60))
echo "Result: $difference_in_24h_periods"
At 2019 -02 -20T11 :17 :30Z и немного, что дало мне:
Result: 11.6618110817684377
Вы можете использовать $((f(difference_in_24h_periods)))
, где f
является одним из round
, floor
, ceil
, nearbyint
, trunc
, rint
, int
, как в C, если вы хотите разность как целое число или используйте спецификации формата printf
, чтобы указать количество значащих цифр.
Сzsh
:
zmodload zsh/datetime
date=2019-02-08T19:24:30.220Z
TZ=UTC0 strftime -rs then_in_seconds '%Y-%m-%dT%H:%M:%S' "${date%.*}"
then_in_seconds+=.${${date##*.}%Z}
now_in_seconds=$EPOCHREALTIME
difference_in_seconds=$((now_in_seconds - then_in_seconds))
difference_in_24h_periods=$((difference_in_seconds / 24 / 60 / 60))
echo "Result: $difference_in_24h_periods"