我需要一行命令来满足下面的要求。
从根目录中search所有文件,只打印文件名长度小于25的文件名。
我想我们可以用下面的find命令来做:
find / -type f |xargs basename ....
我不确定furthur命令。
我的GNU find支持这个,不确定它是否是标准查找的一部分。
find / -type f -regextype posix-extended -regex '.*/.{1,24}$'
或者,使用find | grep的。
find / -type f | egrep '.*/.{1,24}$'
find / -type f|egrep "/[^/]{0,24}$"
或者,如果您只想显示没有路径的文件名:
find / -type f| egrep -o "/[^/]{0,24}$" | cut -c 2-
使用Bash 4+
shopt -s globstar shopt -s nullglob for file in **/* do file=${file##*/} if (( ${#file} < 25 ));then echo "$file"; fi done
红宝石(1.9+)
ruby -e 'Dir["**/*"].each {|x| puts x if File.basename(x).size < 25}'
在快速提到一些手册后,我发现awk更加合适,易于理解。请参阅我提出的下面的解决方案。
find / -type f|awk -F'/' '{print $NF}'| awk 'length($0) < 25'
可能是有一些语法错误。请纠正我,如果我错了。