summaryrefslogtreecommitdiff
path: root/home
diff options
context:
space:
mode:
authorxyz <gky44px1999@gmail.com>2021-12-13 23:13:56 -0800
committerxyz <gky44px1999@gmail.com>2021-12-13 23:13:56 -0800
commitbd44868a4c6ca4794292124b9e63d1209f9a36c8 (patch)
treed45f8cfc0e519527d7ca837e685f8fa3d679d4ed /home
parentb5be445b1b0758442b1ea98a4d8347542e0fc9ec (diff)
gitmetap, consider dirname
Diffstat (limited to 'home')
-rwxr-xr-xhome/xyz/.local/bin/dirnameall21
-rwxr-xr-xhome/xyz/.local/bin/gitmetap2
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))