使用 -exec 选项对 find 命令的输出执行操作

使用 -exec 选项对 find 命令的输出执行操作

我想要对已有 -exec 选项的 find 命令找到的文件执行操作。

find . -type f -exec zgrep -li "4168781103" {} +

输出:

./results/Query_20200501_18_32_00_msisdn_14168781103_detail.csv
./results/Query_20200501_18_32_02_msisdn_14168781103_summary.csv
./results/Query_20200501_18_32_02_msisdn_14168781103_detail.csv
./results/Query_20200501_18_32_04_msisdn_14168781103_summary.csv
./results/Query_20200501_18_32_04_msisdn_14168781103_detail.csv
./results/Query_20200501_18_32_51_msisdn_14168781103_summary.csv
./results/Query_20200501_18_32_51_msisdn_14168781103_detail.csv
./results/Query_20200501_18_36_03_msisdn_14168781103_summary.csv
./2311/2020_05/01/18/2311.TRL_20200501180400114.c.5.3.38.0.trl.gz
./2311/2020_05/01/18/trlindex.db
./2311/2020_05/01/18/2311.TRL_20200501180500115.c.5.3.38.0.trl.gz
./2311/2020_05/01/18/2311.TRL_20200501180600116.c.5.3.38.0.trl.gz
./2311/2020_05/01/18/2311.TRL_20200501180700117.c.5.3.38.0.trl.gz
./2311/2020_05/01/18/2311.TRL_20200501181000118.c.5.3.38.0.trl.gz
./2311/2020_05/01/18/2311.TRL_20200501183000119.c.5.3.38.0.trl.gz
./2311/2020_05/01/18/2311.TRL_20200501183100120.c.5.3.38.0.trl.gz
./2311/2020_05/01/18/2311.TRL_20200501183200121.c.5.3.38.0.trl.gz
./2323/2020_05/01/18/2323.TRL_20200501180400296.4.3.18.0.trl.gz

4168781103我使用带有选项的 find找到了包含关键字符串的这些文件-exec,现在我想打印下面找到的所有以文件名结尾的文件的内容.trl.gz或对这些文件进行搜索......

答案1

如果你只想处理.trl.gz最后的文件,你可以find首先关注它们:

查找 .-type f-名称“*.trl.gz”-exec zgrep -li “4168781103” {} +

然后,为了进一步处理,您可以通过管道进行处理xargs

印刷 :

find . -type f **-name "*.trl.gz"** -exec zgrep -li "4168781103" {} + **| xargs cat ...**

进一步搜索:

find . -type f **-name "*.trl.gz"** -exec zgrep -li "4168781103" {} + **| xargs zgrep ...**

或者在符合 POSIX 标准的 shell 中使用命令替换:

cat $(find . -type f -name "*.trl.gz" -exec zgrep -li "4168781103" {} +)

相关内容