获取目录树中的文件深度
Get file depth in directory tree
我正在使用命令 find
递归浏览目录树、计算文件、大小等...
现在我需要获取每个文件的目录深度。
FreeBSD 和 CentOS 有没有可移植的方法?
我知道 find
能够确定实际的目录深度,但遗憾的是这只适用于 CentOS,不适用于 FreeBSD。
另外 - 我需要保持标准 find
输出或将目录深度放在输出的开头并从那里剪切。
试试这个:
find . -type d -exec bash -c 'echo $(tr -cd / <<< ""|wc -c):' -- {} \; | sort -n | tail -n 1 | awk -F: '{print , }'
您可以计算路径中的 /
:
$ find . -type f -exec bash -c 'echo '{}' | grep -o / | wc -l' \;
或文件名:
$ mkdir -p one/two/three four/five && touch file one/two/file one/two/three/file
$ find . -type f -exec bash -c 'echo -n '{}' :; echo '{}' | grep -o / | wc -l' \;
./file :1
./one/two/file :3
./one/two/three/file :4
我正在使用命令 find
递归浏览目录树、计算文件、大小等...
现在我需要获取每个文件的目录深度。 FreeBSD 和 CentOS 有没有可移植的方法?
我知道 find
能够确定实际的目录深度,但遗憾的是这只适用于 CentOS,不适用于 FreeBSD。
另外 - 我需要保持标准 find
输出或将目录深度放在输出的开头并从那里剪切。
试试这个:
find . -type d -exec bash -c 'echo $(tr -cd / <<< ""|wc -c):' -- {} \; | sort -n | tail -n 1 | awk -F: '{print , }'
您可以计算路径中的 /
:
$ find . -type f -exec bash -c 'echo '{}' | grep -o / | wc -l' \;
或文件名:
$ mkdir -p one/two/three four/five && touch file one/two/file one/two/three/file
$ find . -type f -exec bash -c 'echo -n '{}' :; echo '{}' | grep -o / | wc -l' \;
./file :1
./one/two/file :3
./one/two/three/file :4