以下是规格:查找 /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 = 列出所有完整路径(隐藏和常规)