查找名称为 4 个字符长的文件

Mik*_*ike 27 ls shell find filenames wildcards

我想查找名称只有 4 个字符的文件。

例如,下有三个文件/tmp

$ ls /tmp
txt
file
linux
Run Code Online (Sandbox Code Playgroud)

输出应该只显示,file因为它只有 4 个字符。

dr_*_*dr_ 53

使用?通配符进行文件通配:

ls -d /tmp/????
Run Code Online (Sandbox Code Playgroud)

这将打印文件名长度为 4 个字符的所有文件和目录。

正如@roaima 所建议的那样,该-d标志将阻止ls显示与模式匹配的子目录的内容。

  • +1 不使用`find` (10认同)
  • 使用 `ls -d` 来避免扩展任何匹配 `/tmp/????` 的目录 (4认同)
  • 请注意,这不会列出隐藏文件。 (3认同)
  • 请为此打开一个单独的问题。 (2认同)
  • @ user913 如果简单的 globbing 做同样的工作, find 是矫枉过正。没有错,否则 (2认同)

cuo*_*glm 11

/tmp仅列出文件:

cd /tmp
find . ! -name . -prune -path './????' -type f
Run Code Online (Sandbox Code Playgroud)

/tmp递归列出文件:

find /tmp -path '*/????' -type f
Run Code Online (Sandbox Code Playgroud)


Arc*_*mar 9

尝试:

find /tmp -type f -print| awk -F/ ' length($NF)  == 4 '
Run Code Online (Sandbox Code Playgroud)

有什么awk作用:

  • 使用/的字段分隔符,
  • 查找文件名$NF(最后一个字段)
  • 计算 length
  • 并检查值是否为 4,然后打印它。

  • 如果文件名包含换行符,这将不起作用。 (2认同)