我想查找名称只有 4 个字符的文件。
例如,下面有三个文件/tmp
:
$ ls /tmp
txt
file
linux
输出应该只显示,file
因为它只有 4 个字符。
答案1
使用?
通配符进行文件匹配:
ls -d /tmp/????
这将打印文件名长度为 4 个字符的所有文件和目录。
正如 @roaima 所建议的,该-d
标志将阻止ls
显示与该模式匹配的子目录的内容。
答案2
仅列出文件/tmp
:
cd /tmp
find . ! -name . -prune -path './????' -type f
递归列出文件/tmp
:
find /tmp -path '*/????' -type f
答案3
尝试:
find /tmp -type f -print| awk -F/ ' length($NF) == 4 '
什么awk
是:
- 用作
/
字段分隔符, - 查找文件名
$NF
(最后一个字段) - 计算
length
- 并检查值是否为 4,然后打印它。
答案4
还有一个perl
(5.10 或更高版本)解决方案:
perl -E 'say for </tmp/????>;'
稍微灵活的版本,您可以指定所需的长度:
perl -E 'my $w = "?" x shift; say for </tmp/$w>;' 4