Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 使用“查找”查找最多7个字符长的点文件_Shell_Find - Fatal编程技术网

Shell 使用“查找”查找最多7个字符长的点文件

Shell 使用“查找”查找最多7个字符长的点文件,shell,find,Shell,Find,我试过这个: find . \( -name ".?" -o -name ".??" -o -name ".???" -o -name ".????" -o -name ".?????" -o -name ".??????" \) 但是它不起作用你可以按照自己的方式来做,明确地把所有可能的组合放在一起。但是当你有很多的时候,或者当你不得不修改它的时候,这是很麻烦的。有更简单、

我试过这个:

find . \( -name ".?" -o -name ".??" -o -name ".???" -o -name ".????" -o -name ".?????" -o -name ".??????" \)

但是它不起作用

你可以按照自己的方式来做,明确地把所有可能的组合放在一起。但是当你有很多的时候,或者当你不得不修改它的时候,这是很麻烦的。有更简单、参数化的方法可以做到这一点

一种方法是使用正则表达式:

find . -regextype posix-egrep -regex ".*/\..{1,7}"
如果您的find不支持正则表达式,另一种简单的方法是在awk的帮助下过滤find的输出:

find . -name ".*" | awk -F"/" 'length($NF)<8 {print}'

find-命名“*”| awk-F“/”length($NF)您的命令工作正常。但也有较短的替代方案。例如:

find . -name '.*' ! -name '.???????*'

请尝试删除大括号。此命令主要起作用,但此命令不显示“.”文件。