對不起,如果這是一個基本問題,但我剛剛開始,我有點失落。我有一組約3000個文件,我想運行一個命令。不幸的是,命令來自(morphadorner)的程序一次只能運行8個文件。這些文件被連續編號。如何讓程序在每個第8個文件上迭代,以便處理文件夾中的所有文件?以增量對一組文件實施bash腳本
0
A
回答
0
說你的文件被稱爲file01
,file02
... file64
,那麼你可以使用GNU Parallel
來處理它們像這樣:
parallel -j 1 -n 8 echo {1} {2} {3} {4} {5} {6} {7} {8} ::: file*
和輸出會是這樣:
file001 file002 file003 file004 file005 file006 file007 file008
file009 file010 file011 file012 file013 file014 file015 file016
file017 file018 file019 file020 file021 file022 file023 file024
file025 file026 file027 file028 file029 file030 file031 file032
file033 file034 file035 file036 file037 file038 file039 file040
file041 file042 file043 file044 file045 file046 file047 file048
file049 file050 file051 file052 file053 file054 file055 file056
file057 file058 file059 file060 file061 file062 file063 file064
中當然,我只迴應參數,你可能會打電話給morphadorner
。
的-j 1
說只運行一次一個morphadorner
- 你可能要忽略這一點,並讓說8 morphadorners
在同一時刻運行,如果你有8個CPU內核。
-n 8
說到消耗 8個參數/文件在時間。
的{1}
爲第一個參數的佔位符,並且{2}
是第二個參數等
:::
該佔位符是一個分離器,它告訴GNU Parallel
,所述參數是關於跟隨。
0
看一看這段代碼:
files=(*)
count=${#files[@]}
limit=8
echo "Processing $count files: ${files[@]}"
while [ $count -gt 0 ] ; do
count=$((count-8))
[ $count -lt 0 ] && limit=$((limit+count)) && count=0
part=("${files[@]:$count:$limit}")
echo $count-$((count+limit)): "${part[@]}"
done
相關問題
- 1. bash腳本增量數
- 2. Bash增量破壞腳本
- 3. 從文件讀入變量 - Bash腳本
- 4. Unix Bash腳本:對一組變量使用sort -n
- 5. bash腳本以從第二bash腳本獲取變量
- 6. 比較shell腳本和增量文件
- 7. Powershell腳本文件名增量
- 8. bash腳本 - 即對應於文件
- 9. 如何增加另一個bash腳本中的全局變量
- 10. Bash:每次運行腳本時都會從腳本中增加一個變量
- 11. bash腳本,修改一個文件
- 12. bash腳本:統計唯一行文件
- 13. 從文件有一個bash腳本
- 14. 記錄一個bash腳本文件
- 15. 實施ExpectJ Python的腳本
- 16. 變量bash腳本
- 17. 從perl腳本輸出文件以供bash腳本讀取
- 18. bash腳本讀取文件中的變量到本地變量
- 19. 文件搜索bash腳本
- 20. bash腳本比較文件
- 21. bash腳本讀取文件
- 22. bash腳本從文件名
- 23. 運行BASH腳本文件
- 24. Bash腳本 - 文件大小
- 25. bash腳本查找文件
- 26. Bash腳本複製文件
- 27. 閱讀Bash腳本文件
- 28. bash腳本上傳文件
- 29. bash腳本變量數組名
- 30. bash腳本數組