簡體   English   中英

腳本/ bin / bash擴展時間過長,grep部分無法在find中工作

[英]Script /bin/bash augment too long and grep section not working in find

我正在嘗試編寫一個簡單的腳本,該腳本將查找文件中的字段是否為空,例如x_Field =“”

find /mnt/sdb1/*/*/ -name 'files.txt' -type f -follow -print0 {} \; | xargs -0 grep -o -P '(?<=x_Field).*(?=y_Field)' | cut -c 3 | awk '{sub(/..$/,"")}1'

我認為該命令在沒有找到的情況下有效,但在沒有找到的情況下不起作用?

grep -o -P '(?<=x_Field).*(?=y_Field)' | cut -c 3 | awk '{sub(/..$/,"")}1'

另外,當我使這一半工作時,如果我似乎要掃描的文件太多,那么擴展時間太長了:-(

抱歉,我還需要檢查數百個子文件夾,因此為什么要使用通配符

您的find命令有很多錯誤。

顯然, /mnt/sdb1/*/*擴展為一個列表,對於您的shell來說太長了。 您可以將其替換為/mnt/sdb1 -mindepth 2 (假設要避免在sdb1緊下面的目錄中找到任何內容)。

{} \\; 如果您具有-exec選項,則將很有用,但您沒有。

另外, grep | cut | awk grep | cut | awk grep | cut | awk可能可以重構為單個Awk腳本,但是如果沒有正確理解它應該完成的工作,就很難編寫替代代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM