2012-10-01 34 views
0

我有這些早晨之一,沒有任何計劃。我需要將文件通過的1000塊在時間移動到目標目錄循環移動不起作用的文件

我想環路經過我的文件,像這樣

for i in `find . -name '*XML'` 
    for((b=0; b<1000; b++)) 
    do 
    mv $i targetdirect/ 
    done 
done 

但我得到一個「-bash:靠近意外的標記語法錯誤`DONE :「錯誤。

我在想什麼?

+0

此循環也會(嘗試)將每個文件移動到目標目錄1000次。它不會將每個調用1000個不同的文件移動到'mv'。 – chepner

回答

0

你的第一個for循環有沒有相應的do(你有兩個done,但只有一個do。)

3

第二for循環是一個語法錯誤。你也應該雙引號"$i"

你一次移動1000個文件是什麼意思?也許這樣的事情?

find . -name '*.XML' -print0 | xargs -r0 -n 1000 mv -t targetdirect 

-print0和相應xargs -0是GNU擴展處理任意文件名。這是有效的,因爲在Unix上文件名中的空字符是無效字符;因此,使用文件名之間的分隔符是安全的。對於定期命名的文件(文件名中沒有引號,沒有換行符等),這看起來可能是偏執狂,但它是記錄良好的練習和FAQ