我想知道什麼是最大數量,對於-loop命令可以支持bash + dose for loop有限制嗎?
,比如我有900 .txt文件
當我運行的for循環中,我看到所有文件被使用grep匹配
但劑量for循環可以讀取例如20000個文件?什麼限制?
ls | grep .txt | wc -l
950
for循環
for FILE_NAME in ` ls | grep .txt `
do
grep WORD $FILE_NAME
done
我想知道什麼是最大數量,對於-loop命令可以支持bash + dose for loop有限制嗎?
,比如我有900 .txt文件
當我運行的for循環中,我看到所有文件被使用grep匹配
但劑量for循環可以讀取例如20000個文件?什麼限制?
ls | grep .txt | wc -l
950
for循環
for FILE_NAME in ` ls | grep .txt `
do
grep WORD $FILE_NAME
done
內置的構造就像一個for
循環有沒有最大:
for FILE_NAME in *.txt; do
可以擴展到*.txt
名稱都存在於當前目錄中。由於bash
擴展模式和迭代結果,它可以管理列表本身。這同樣適用於像
printf "%s\n" *.txt
一個內置的命令,因爲這兩個bash
擴展圖案和在解釋器過程本身執行printf
。
對比度與
ls *.txt
在這裏,我們知道有兩個獨立的程序(在bash
解釋和ls
)通過操作系統的API傳遞參數的命令通信。 bash
必須將模式擴展爲所有匹配的文件,它們將它們放到用於將參數傳遞給新進程的數組中(請考慮main()
函數的argv
)。 這個數組有一個由您的操作系統定義的最大大小,如果匹配的文件過多,會導致「命令行太長」或「太多參數」錯誤。
upvote for you -can you also upvote for me? (我認爲我的問題質量很好(不明白爲什麼我得到-2) – maihabunash 2014-10-28 08:14:55
在1959年文件中的試運行將
$ ls | wc -l
1960
for循環使用
$count=0
$ for file in *
> do
>((count += 1))
> done
echo $count
1959
肯定會爲900個文件工作
for
帶有globbing的循環可用於處理目錄中的每個文件。
#!/bin/bash
filename="*txt"
for file in $filename
do
#Do something
done
Bash在通配符識別的表達式上執行文件名擴展。
的問題是的 - 但我想獲得最大編號! – maihabunash 2014-10-27 11:56:47
@maihabunash只受目錄中的文件數量限制 – nu11p01n73R 2014-10-27 12:08:03
嗯,你不應該在這裏使用'ls' ...'爲FILE_NAME在* .txt'中 – 2014-10-27 11:23:07
WHY -1?我的問題有什麼不好? – maihabunash 2014-10-27 11:30:10
你是什麼意思的'grep perl $ FILE_NAME' – nu11p01n73R 2014-10-27 11:33:18