如何使用单行递归打印文件名短于 25 个字符的文件列表?

发布于 2024-10-18 07:22:12 字数 175 浏览 6 评论 0原文

我需要一个单行命令来满足以下要求。

从根目录搜索所有文件,并仅打印那些文件名长度小于 25 的文件名。

我想我们可以使用 find 命令来完成,如下所示:

find / -type f |xargs basename ... . 我不确定furthur 命令。

I need a one line command for the below requirement.

Search all the files from the root directory and print only those files names whose file name length is less than 25.

I suppose we can do it with find command something like below:

find / -type f |xargs basename .... I am not sure about furthur command.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

过潦 2024-10-25 07:22:12

我的 GNU find 支持这一点,不确定它是否是标准 find 的一部分。

find / -type f -regextype posix-extended -regex '.*/.{1,24}

或者,使用 find | grep。

find / -type f | egrep '.*/.{1,24}

或者,使用 find | grep。



或者,使用 find | grep。

My GNU find supports this, unsure whether it's a part of standard find.

find / -type f -regextype posix-extended -regex '.*/.{1,24}

Alternatively, use find | grep.

find / -type f | egrep '.*/.{1,24}

Alternatively, use find | grep.



Alternatively, use find | grep.

×眷恋的温暖 2024-10-25 07:22:12
find / -type f|egrep "/[^/]{0,24}$"

或者,如果您只想显示文件名而不显示路径:

find / -type f| egrep -o "/[^/]{0,24}$" | cut -c 2-
find / -type f|egrep "/[^/]{0,24}$"

Alternatively if you only want to display the filename without the path:

find / -type f| egrep -o "/[^/]{0,24}$" | cut -c 2-
挖个坑埋了你 2024-10-25 07:22:12

使用 Bash 4+

shopt -s globstar
shopt -s nullglob
for file in **/*
do
   file=${file##*/}
   if (( ${#file} < 25 ));then echo "$file"; fi
done

Ruby(1.9+)

ruby -e 'Dir["**/*"].each {|x| puts x if File.basename(x).size < 25}'

Using Bash 4+

shopt -s globstar
shopt -s nullglob
for file in **/*
do
   file=${file##*/}
   if (( ${#file} < 25 ));then echo "$file"; fi
done

Ruby(1.9+)

ruby -e 'Dir["**/*"].each {|x| puts x if File.basename(x).size < 25}'
清泪尽 2024-10-25 07:22:12

在快速参考了一些手册后,我发现 awk 更合适且易于理解。请参阅我提出的以下解决方案。

find / -type f|awk -F'/' '{print $NF}'| awk 'length($0) < 25'

可能有一些语法错误。如果我错了,请纠正我。

After referring quickly some manuals i got to find awk to be more suitable and easy to understand.please see the below solution which i had came up with.

find / -type f|awk -F'/' '{print $NF}'| awk 'length($0) < 25'

may be there are some syntax errors.please correct me if i am wrong.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文