嗨,大家好我有this threadgrep的只是最後一行後發現所需的文件
我需要找到特定文件名的一些文件,並使用grep對這些文件的最後一行找到某個字符串的擴展問題。
我目前有:
find my_dir/ -name "*filename*" | xargs grep 'lookingfor'
我是新來使用這些命令這麼多的幫助,將不勝感激。先謝謝你。
嗨,大家好我有this threadgrep的只是最後一行後發現所需的文件
我需要找到特定文件名的一些文件,並使用grep對這些文件的最後一行找到某個字符串的擴展問題。
我目前有:
find my_dir/ -name "*filename*" | xargs grep 'lookingfor'
我是新來使用這些命令這麼多的幫助,將不勝感激。先謝謝你。
比如,你可以這樣做:
find my_dir/ -name "*filename*" -exec sh -c "tail -200 {} | grep lookingfor" \;
設置200
到你想要的最後行數。
我會去與
find my_dir -name '*filename*' -type f \
-exec /bin/bash -c '(tail -5 "$1" | grep -q lookingfor) && echo "$1"' _ {} \;
這樣你會正確地處理所有的(當然,希望所有:-))的文件名,甚至包括那些「及其他內部奇怪的符號。此外,我會建議顯式調用/斌/慶典,因爲/ bin/sh的可能像ash
,sash
和dash
一個殘缺的SH-變種被鏈接。
另外,它似乎我剛剛在bash中發現了一個bug /一個奇怪的行爲:'bash -c'echo \ $ @ = \「$ @ \」;' a b c'給我'$ @ =「b c」':-)。這就是爲什麼我需要在命令參數'{}'之間添加一個'_'的原因 – user3159253
使用find + AWK + WC -l
find my_dir -name '*filename*' -type f -exec awk 'NR>count-100{print FILENAME, $0}' count=$(wc -l < {}) {} +
將100調整爲所需的最後一行數。
這樣他就失去了檔案名稱 – user3159253
@ user3159253他可以只爲'[tag:grep]添加'-H'標誌來修復該問題 – BroSlow
不,他不能。尾巴吃的文件名,而grep只適用於'STDIN' – user3159253