diff options
author | xyz <gky44px1999@gmail.com> | 2021-12-15 00:35:02 -0800 |
---|---|---|
committer | xyz <gky44px1999@gmail.com> | 2021-12-15 00:35:02 -0800 |
commit | ff17dcb6a36cab092e9cac5e175e7f5e866da244 (patch) | |
tree | 65063b9368d624ab2899c3466ead8332e9e94fec /home | |
parent | 90566791fe451bec484e292909af411a1674fea9 (diff) |
dirnameall, optimize with awk
Diffstat (limited to 'home')
-rwxr-xr-x | home/xyz/.local/bin/dirnameall | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/home/xyz/.local/bin/dirnameall b/home/xyz/.local/bin/dirnameall index 6bd67fd3..d2d78a5b 100755 --- a/home/xyz/.local/bin/dirnameall +++ b/home/xyz/.local/bin/dirnameall @@ -8,14 +8,12 @@ $line" paths="$line" fi done -dirs="$(echo "$paths" | tr '\n' '\0' | xargs -0 dirname | sort | uniq)" -paths="$paths -$dirs" -while [ "$(echo "$dirs" | wc -l)" -ne 1 ]; do - dirs="$(echo "$dirs" | tr '\n' '\0' | xargs -0 dirname | sort | uniq)" - paths="$paths +dirs="$paths" +while [ "$dirs" != '.' ]; do + [ -n "$dirs" ] && paths="$paths $dirs" + dirs="$(echo "$dirs" | tr '\n' '\0' | xargs -0 dirname | awk '!a[$0]++')" done -echo "$paths" | sort | uniq | grep -v '^\.$' +echo "$paths" | awk '!a[$0]++' | grep -v '^\.$' |