diff options
author | xyz <gky44px1999@gmail.com> | 2021-12-13 23:13:56 -0800 |
---|---|---|
committer | xyz <gky44px1999@gmail.com> | 2021-12-13 23:13:56 -0800 |
commit | bd44868a4c6ca4794292124b9e63d1209f9a36c8 (patch) | |
tree | d45f8cfc0e519527d7ca837e685f8fa3d679d4ed /home | |
parent | b5be445b1b0758442b1ea98a4d8347542e0fc9ec (diff) |
gitmetap, consider dirname
Diffstat (limited to 'home')
-rwxr-xr-x | home/xyz/.local/bin/dirnameall | 21 | ||||
-rwxr-xr-x | home/xyz/.local/bin/gitmetap | 2 |
2 files changed, 22 insertions, 1 deletions
diff --git a/home/xyz/.local/bin/dirnameall b/home/xyz/.local/bin/dirnameall new file mode 100755 index 00000000..6bd67fd3 --- /dev/null +++ b/home/xyz/.local/bin/dirnameall @@ -0,0 +1,21 @@ +#!/bin/sh + +while read -r line; do + if [ -n "$paths" ]; then + paths="$paths +$line" + else + 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" +done + +echo "$paths" | sort | uniq | grep -v '^\.$' diff --git a/home/xyz/.local/bin/gitmetap b/home/xyz/.local/bin/gitmetap index 21ae1c1b..c0589860 100755 --- a/home/xyz/.local/bin/gitmetap +++ b/home/xyz/.local/bin/gitmetap @@ -3,7 +3,7 @@ # -rw-r--r-- == binary 110100100 == octal 644 # https://stackoverflow.com/a/1796009 -$1 ls-tree -r --name-only --full-tree HEAD | awk -v a="$2/" '{printf("%s%s\n",a,$0)}' | tr '\n' '\0' | xargs -0 ls -ldA -- | awk '{ +$1 ls-tree -r --name-only --full-tree HEAD | dirnameall | awk -v a="$2/" '{printf("%s%s\n",a,$0)}' | tr '\n' '\0' | xargs -0 ls -ldA -- | awk '{ k=0 for(i=0;i<=8;i++) k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i)) |