递归转储位于不同文件夹中的文件的内容

时间:2014-03-18 21:11:07

标签: bash

仍然是bash编程的新手我正在与我得到的另一项任务作斗争。一个名为“.dump”的特定文件(是的,开头有一个点)位于每个文件夹中,并且始终包含三个数字。我需要在变量中转储第三个数字,如果它大于1000,然后打印它以及找到该数字的文件夹名称。所以结果应该是这样的:

"/dir1/ 1245" 
"/dir1/subdir1/ 3434"
"/dir1/subdir2/ 10003"
"/dir1/subdir2/subsubdir3/ 4123" 
"/dir2/ 45440" 

(without "" and each of them in a new line (not sure, why it is not shown correctly here))

我正在玩awkfindwhile,但结果很糟糕,我不想在这里发帖,我希望能理解。因此,任何代码片段帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

这可以清理,但应该有效:

find /dir1 /dir2 -name .dump -exec sh -c 'k=$(awk "\$3 > 1000{print \$3; exit 1}" $0) ||
    echo ${0%.dump} $k ' {} \;

(我假设.dump文件中的所有三个数字都出现在一行上。如果输入的格式不同,则需要修改awk。)