Исходя из вашей попытки решения, вот как можно выполнить эту задачу:
find /path/to/cool/stuff \
-maxdepth 4 \
-type d \
-name '*Magic Data*' \
-exec sh -c '
for d do
printf "%s: " "$PWD/$d"
find "$d/." -maxdepth 1 ! -name. -printf "\\n" | wc -l
done
' find_sh {} +
Пояснение:
find
-просмотра целевых каталогов ваш рецепт соблюдается. {} +
и передаем их оболочке sh
через список аргументов:sh -c '...' find_sh {} +
sh
, который является нулевым аргументом $0
, и поэтому ему можно присвоить любое имя, и в данном случае мы называем его find_sh
. Это имя будет отображаться в списке процессов. {} +
и формирует аргументы $1 $2 $3...
для создаваемой нами оболочки. ! -name.
OTW, имя целевого каталога также учитывается в выводе wc -l. sed -Ei 's/,{,1} {,1}foo = \$(true|false),{,1} {,1}/bar/g' file
sed -Ei 's/(, ){,1}foo = \$(true|false)(, ){,1}/bar/g' file
Флаг-E
активирует расширенные регулярные выражения, которые позволяют использование метасимволов (){}|
без экранирования.
(, ){,1}
соответствует от 0 (подразумеваемых )до 1 вхождений ,
.
\$(true|false)
соответствует $true
или $false
.
Имейте в виду, что
sed -i -e 's/, foo = $true/bar/g' -e 's/, foo = $false/bar/g' -e 's/foo = $true, /bar/g'... file
— это одна команда sed, но с различными скриптами (по одному для каждого -e
флага ).