仍然是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))
我正在玩awk
,find
和while
,但结果很糟糕,我不想在这里发帖,我希望能理解。因此,任何代码片段帮助表示赞赏。
答案 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。)