i have a series of string representing disks on a file system. I would like to match all the strings with more than one subfolder. Ex:
/dev/sda1 (no match)
/ (no match)
/dev (no match)
/dev/mapper/usr (match)
/dev/test/local (match)
I've tried something like:
^\/[^\/]+\/[^\/]+\/[^\/]+$
But would like to have something more generic that matches all the strings that have this pattern /.*
more than twice. Is there a more elegant way to approach this ?
Unfortunately the solution proposed by @Wiktor Stribiżew, while working on regex 101, does not seems to solve the problem.
To further expand on the topic i have this output from df:
...
cgroup 0 0 0 - /sys/fs/cgroup/hugetlb
cgroup 0 0 0 - /sys/fs/cgroup/devices
mqueue 0 0 0 - /dev/mqueue
/dev/vda9 28056816 12475936 14381828 47% /hostroot
/dev/mapper/usr 1007760 880440 75304 93% /hostroot/usr
/dev/vda6 110576 96 101308 1% /hostroot/usr/share/oem
sysfs 0 0 0 - /hostroot/sys
/dev/vda1 130798 106402 24396 82% /hostroot/boot
...
and this pattern for awk:
PATTERN='!/loop/ && /^\// && !/^(\/[^\/]+){3,}$/ {printf \
"\"'${NAME}'\":\"%s\","\
"\"mount\":\"%s\","\
"\"total\":%d,"\
"\"used\":%d,"\
"\"free\":%d,"\
"\"percentage\":%.2f\n", $1, $6, $2, $2-$4, $4, ($2-$4)/($2+1)*100}'
when launching the command: df -a | awk "$PATTERN"
i would expect to get this output:
"device":"/dev/vda6","mount":"/hostroot/usr/share/oem","total":110576,"used":9268,"free":101308,"percentage":8.38
"device":"/dev/vda1","mount":"/hostroot/boot","total":130798,"used":106402,"free":24396,"percentage":81.35
"device":"/dev/vda9","mount":"/docker-volumes.d/state","total":28056816,"used":13675036,"free":14381780,"percentage":48.74
But instead the /dev/mapper/usr
does not get filtered out.
"device":"/dev/mapper/usr","mount":"/hostroot/usr","total":1007760,"used":932456,"free":75304,"percentage":92.53
"device":"/dev/vda6","mount":"/hostroot/usr/share/oem","total":110576,"used":9268,"free":101308,"percentage":8.38
"device":"/dev/vda1","mount":"/hostroot/boot","total":130798,"used":106402,"free":24396,"percentage":81.35
"device":"/dev/vda9","mount":"/docker-volumes.d/state","total":28056816,"used":13675036,"free":14381780,"percentage":48.74
any guess on why?