我有一个可以完美运行的 find 命令,只是它不对结果进行排序。 path = 要搜索的文件夹的路径 foo = 搜索词
find /path/ -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color -i "foo"' \;
结果(在我的屏幕上“foo”呈红色)
me@myComp ~ $ find /path/ -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color -i "foo"' \;
/path/lesson 05.pdf:a foo
/path/lesson 05.pdf: (to have) a foo when I was 10 years old.
/path/lesson 07.pdf:a foo
/path/lesson 07.pdf:Elephant – foo – heavy
/path/lesson 07.pdf:Elephant – foo – heavy – light
/path/lesson 07.pdf:tigers – high – foos – to jump
/path/lesson 04.pdf:10 My foo (not to eat) fat.
/path/lesson 06.pdf:A: John lost the foos collar. B: Is this its ? (rarely used)
/path/lesson 06.pdf:A: This is my foo. .......... is a chihuahua. .......... name is Sleeper.
有没有某种方法可以按路径/文件名的字母顺序对结果进行排序,同时保持 foo 红色?正如您所看到的,第04课.pdf位于第07课.pdf和第06课.pdf之间。
使用 |最后的 sort 给出了所需的结果,只是 foo 不再是红色的。
非常感谢
答案1
我认为这应该做你想要的:
while read file; do pdftotext "$file" | grep --with-filename --label="$file" --color -i "foo"'; done < <(find /path/ -name '*.pdf' | sort)