2015-07-20 42 views
1

我正在寻找一种方式来做到这一点在命令行上,因为这是不太难的JavaPython任务。如何测量文件系统路径的深度?

喜欢的东西:

$ measure_depth /a/b/c/d/e/f 
6 
$ measure_depth /a 
1 

这个问题是功能上等同于“有没有一种简单的方法来计算一个文件名斜线的数量?”

+0

你想测量'measure_depth /'的深度?对于'measure_depth/a /'? – John1024

回答

1

定义measure_depth功能:

measure_depth() { echo "${*#/}" | awk -F/ '{print NF}'; } 

然后,按如下方式使用它:

$ measure_depth /a/b/c/d/e/f 
6 
$ measure_depth /a 
1 
0

你可以做这样的事情

tr -s "/" "\n" | wc -l 

它给你一个额外的一个,所以它周围的 “哈克” 的方式将

sed "s/^\///" | tr -s "/" "\n" | wc -l 

echo "https://stackoverflow.com/a/b/c/d/e/f" | sed "s/^\///" | tr -s "/" "\n" | wc -l 
6 
0

使用realpath计数斜线避免高估作为例如前/home/user/../user/../user/../user/dir/将被转换为/home/user/dir

realpath <dir> | grep -o '/' | wc -l 
+1

的OP使用OS X不是Linux,由标签指出,和'realpath'默认情况下不存在于OS X也不默认情况下它在一些现代的Linux发行版,例如,Linux Mint的17.1安装和需要手动安装它以这种或那种方式事后。它是GNU的coreutils的一部分,并可以使用自制软件或手动如果安装命令行工具OS X安装。也就是说,John1024的答案是IMO迄今为止最好的答案。 – user3439894

相关问题