嗨,我是一個新手linux用戶。我試圖在bash中使用find命令來搜索給定的目錄,每個目錄包含多個具有相同名稱但具有不同內容的文件,以在文件中查找最大值。對bash中find命令的多個結果進行操作
起初,我沒有服用該目錄作爲輸入,並知道該文件將不低於2個目錄深,所以我是用嵌套循環如下:
prev_value=0
for i in <directory_name> ; do
if [ -d "$i" ]; then
cd $i
for j in "$i"/* ; do
if [ -d "$j" ]; then
cd $j
curr_value=`grep "<keyword>" <filename>.txt | cut -c32-33` #gets value I'm comparing
if [ $curr_value -lt $prev_value ]; then
curr_value=$prev_value
else
prev_value=$curr_value
fi
fi
done
fi
done
echo $prev_value
顯然這不會削減它現在。我查看了find的-exec選項,但是由於find產生了大量的結果,我只是不確定如何處理變量賦值和比較。任何幫助將不勝感激,謝謝。
奇妙的是,我正在掃描手冊頁以獲得正確的標誌。提供管道的解釋(OP說他是新的!),並且你有我的真誠投票:) – slezica
這真的很有幫助謝謝。但是我可能應該提到我需要解析的文件包含在多個目錄中。我不知道這是否有道理,但我基本上需要能夠按日期搜索,即/2013.04.07,/2012.*和/ *需要能夠工作,如果它們作爲參數傳遞 – user3025408
Don'當你不需要它時使用'xargs'。這個更短更好:'find「$ DIRECTORY」-name「$ FILENAME.txt」-exec grep「$ KEYWORD」{} \;'。當'$ DIRECTORY'足夠時,爲什麼使用'$ {DIRECTORY}'風格更長的時間呢? – janos