在 Linux 中使用 find 打印文件的完整路径和大小

在 Linux 中使用 find 打印文件的完整路径和大小

以下是规格:查找 /tmp/test 修改时间之后修改的所有文件,从搜索中排除 /proc 和 /sys,并打印文件的完整路径以及可读的大小。以下是我目前所拥有的:

find / \( -path /proc -o -path /sys \) -prune -o -newer /tmp/test -exec ls -lh {} \; | less

问题是无法打印完整路径。不幸的是,ls 不支持打印完整路径!我发现的所有显示如何打印完整路径的解决方案都建议使用 find。:|

有什么想法吗?谢谢!

答案1

您也-exec ls -lh {} \;可以使用以下printf选项:

find / \( -path /proc -o -path /sys \) -prune -o -newer /tmp/test -printf "%s %p\n" | less

尽管这只会以字节为单位打印大小,而不是以良好的人类可读的格式ls支持。

答案2

添加-d到 ls 命令。

find / \( -path /proc -o -path /sys \) -prune -o -newer /tmp/test -exec ls -lhd {} \; | less

这也将解决您必然会遇到的文件在列表中出现两次的问题。

答案3

我也喜欢我的完整路径,所以我最终为这样的场合创建了几个别名: alias ldf='ls $PWD/* -dF' alias lfp='ls $PWD/* -daFc --group-directories-first' alias lfh='ls $PWD/.* -daFc --group-directories-first' alias lafp='ls $PWD/.* $PWD/* -daFc --group-directories-first' 并且简单地将它们存储到 $HOME/.bashrc(这些已经遵循 .bashrc 的语法)但是,如果有人想将代码复制+粘贴到终端(不推荐的做法,但我不是你的监护人,所以:)这里是 .bashrc 的直接粘贴:

echo " alias ldf='ls $PWD/* -dF' alias lfp='ls $PWD/* -daFc --group-directories-first' alias lfh='ls $PWD/.* -daFc --group-directories-first' alias lafp='ls $PWD/.* $PWD/* -daFc --group-directories-first'" >> ~/.bashrc

所有这些基本上都是为了同一个目标,针对特定目的进行了细微调整;例如:ldf = 列出目录文件,lfp = 列出使用的完整路径组织标志,lfh = 列出完整隐藏,最后;对于所有用户和海豚:lafp = 列出所有完整路径(隐藏和常规)

相关内容