首页 > 解决方案 > Shell - 修改 find 命令输出

问题描述

无论如何要打印并输出到 find 命令而不在输出中列出 find 的目录?意思是如果我发出

find /home/people/name -type f -name >> /output/log/output.txt

日志中的输出写为:

/home/people/name/filename1.txt
/home/people/name/filename2.txt
/home/people/name/filename3.txt

我想要的只是没有目录名的文件名?那可能吗?

标签: shell

解决方案


默认情况下,如您所见,find打印完整路径:

$ find /home/people/name -type f
/home/people/name/filename1.txt
/home/people/name/filename3.txt
/home/people/name/filename2.txt

find但是,确实提供了对使用输出的控制-printf。要仅获取没有路径的文件名,请尝试:

$ find /home/people/name -type f -printf '%f\n'
filename1.txt
filename3.txt
filename2.txt

%f告诉find你想要没有路径的文件名。 \n告诉find您希望在每个文件名后有一个换行符。

当然,输出可以保存在文件中:

$ find /home/people/name -type f -printf '%f\n' >output.txt
$ cat output.txt
filename1.txt
filename3.txt
filename2.txt

推荐阅读