2015-06-20 78 views

回答

4

更新回答

雖然下面我原來的答覆是功能性的,在評論格倫(@glennjackman)的建議是更爲簡潔,地道,雄辯和最好 - 如下:

#!/bin/bash 
mkdir subdir 
for f in file*; do 
    awk -F, 'NF>100{exit 1}' "$f" || mv "$f" subdir 
done 

它基本上依賴於awk的退出狀態,一般爲0,然後在遇到需要移動的文件時只設置爲1

原來的答案

這會告訴你,如果一個文件有任何一行100餘個逗號:

awk -F, 'NF>100{print 1;exit} END{print 0}' someFile 

它將打印1和退出而不解析,如果該文件的剩餘部分文件具有超過100的任何行,並且如果沒有,則在末尾打印0

如果你想將它們移動爲好,使用

#!/bin/bash 
mkdir subdir 
for f in file*; do 
    if [[ $(awk -F, 'NF>100{print 1;exit}END{print 0}' "$f") != "0" ]]; then 
     echo mv "$f" subdir 
    fi 
done 

試試這個,看看它是否選擇正確的文件,並且,如果你喜歡它,刪除單詞echo並再次運行它,所以它實際上移動它們。先備份!

+0

我可以移動此文件而不是打印1 –

+1

我建議使用打印命令的退出值。然後:'awk'NF> 100 {exit 1}'「$ f」|| mv ...' –

+1

@glennjackman很好的建議,謝謝。我已經將其作爲答案。 –

相關問題