下面的命令:如何限制在bash中查找命令的結果?
find . -name "file2015-0*" -exec mv {} .. \;
影響約1500的結果。他們一個接一個地移動上一個關卡。
如果我認爲結果不超過例如400?我怎麼能?
下面的命令:如何限制在bash中查找命令的結果?
find . -name "file2015-0*" -exec mv {} .. \;
影響約1500的結果。他們一個接一個地移動上一個關卡。
如果我認爲結果不超過例如400?我怎麼能?
你可以這樣做:
find . -name "file2015-0*" | head -400 | xargs -I filename mv filename ..
如果你想模仿它做什麼用echo
:
find . -name "file2015-0*" | head -400 | xargs -I filename echo mv filename ..
優秀! 非常感謝你蒂亞戈! – 2015-02-09 17:28:19
很高興幫助!如果您認爲這是最好的,請接受答案。 – Tiago 2015-02-09 17:34:25
是的!我會接受它! 真的,我一直在尋找一個「查找」參數來停止它,當400結果發現好(像crtl C但單獨工作:))。 這種方式可以適用於大於1500的大量數據,並且對磁盤的訪問不會很密集。無論如何,今天爲1500它真的很好! BR Mariano – 2015-02-09 17:49:47
例如,您可以提供find
輸出到while read
循環並跟蹤與反:
counter=1
while IFS= read -r file
do
[ "$counter" -ge 400 ] && exit
mv "$file" ..
((counter++))
done < <(find . -name "file2015-0*")
注意,這可能導致問題,如果文件名包含新的生產線......這是不太可能。另外,請注意mv
命令現在正在向上一級移動。如果你想讓它與dir的路徑相關,一些bash轉換可以實現它。
如果有1500分的結果,其中有400應該選擇?即使採用確定性方式(例如按字母順序排列),也很難猜測哪些文件可能會被退回。你應該更廣泛地解釋你正在努力完成什麼。 – FatalError 2015-02-09 15:56:21
嗨Fedorqui,謝謝你的回覆! – 2015-02-09 17:14:17
嗨Fedorqui,謝謝你的回覆! 它沒有關係的順序,只有約400結果在一個時間。 這個想法是移動400個文件,因爲在上一個級別運行的另一個進程會降低其性能。 我的意思是,在這個例子中,將有四個部分的光榮舉動:400的第一個,400的第2個,400的第3個和第300個。 BR! – 2015-02-09 17:22:18