linux - 查找Linux中最长的文件名

标签 linux io-redirection

我正在搜索从根目录到最底部的最长文件名。

我编写了一个 C 程序来计算最长文件名的长度及其名称。

但是,我无法让 shell 将一长串文件名重定向到标准输入,以便我的程序接收它。

这是我所做的:

ls -Rp | grep -v / | grep -v "Permission denied" | ./home/user/findlongest

findlongest 已编译,我在我的一个 IDE 上检查它以确保它正常工作。到目前为止,尚未检测到运行时错误。

如何通过重定向标准输入将文件名列表放入“findlongest”代码中?

最佳答案

试试这个:

find / -type f -printf '%f\n' 2>/dev/null | /home/user/findlongest

2>/dev/null 将丢弃所有写入 stderr 的数据(您可以在其中看到“权限被拒绝”消息)。

或者使用以下命令来删除对您的应用程序的依赖(来自 here ):

find / -type f -printf '%f\n' 2>/dev/null | \
    awk 'length > max_length {
           max_length = length; longest_line = $0
         }
         END {
           print length(longest_line) " " longest_line
         }'

关于linux - 查找Linux中最长的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42809358/

相关文章:

c - 如何在C中执行shell命令?

linux - 捕获其他程序stderr和stdout的程序

zsh:重置 stdout/stderr 重定向

bash - Shell 重定向 i/o 顺序

c - 如何阻止 execve 退出原始程序

bash - 如何忽略 bash stdin 重定向的错误?

mysql + ruby​​ on rails + linux mint = 不起作用

c - 如何使用 TOS 设置消息优先级?

python - 为什么我每次打开新终端时都必须返回 "source vitrualenvwrapper.sh"?

linux - 使用 ipcrm 删除共享内存