On Thu, 29 May 2014 14:31:03 -0500 Dennis Wicks <w...@mgssub.com> wrote:
> Can't quite figure out how to do this. > > I'd like to be able to scan a Volume or directory and find > all directories that have only one item in them. Either > directory or file. > > Any ideas?? This one * wraps around find utility so that you can easily add further constraints (those will only apply to the directory you search, not to the child), * works in good-old `sh`, * returns true if found at least 1 (similar to grep), * does not "slurp" the whole list, i.e. should start printing matches ASAP instead of waiting for find to finish: #!/bin/sh filter_single_item() { rv=1 while read path; do test $(ls "$path" | wc -l) -eq 1 && echo "$path" && rv=0 done return $rv } find "$@" -type d | filter_single_item Yes it's quite ineffective as it creates at least 3 processes per each dir it scans, but it depends on your case if it's problem. OTOH, if you are sure no dir contains space, you could use `echo` instead of ls and add -w option to wc. Eventually you could even replace wc with some trick with variable expansion. (probably switching to bash for better tricks). aL. -- Alois Mahdal -- To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20140602034936.18a1d...@hugo.daonet.home