cmd find 命令 多个 或者 关系 +windows_使用 rush 进行命令并行处理
rush 是一個(gè)類似于 GNU-parallel 的工具,提供了并行化命令的處理方案。 官方地址是:https://github.com/shenwei356/rush,該工具由人稱爪哥的生信同行用 Golang 編寫而成(強(qiáng)!)。 他開發(fā)的其他幾個(gè)工具也比較有名,如 seqkit、csvtk。感興趣的朋友可以訪問他的博客。
rush 提供的功能特性非常多,作為技術(shù)介紹文,這里我只會(huì)簡單介紹它的基礎(chǔ)核心功能。其他功能讀者可以通過 GitHub 官網(wǎng)閱讀和學(xué)習(xí)。
下載和安裝
- Linux - http://app.shenwei.me/data/rush/rush_linux_amd64.tar.gz
- MacOS - http://app.shenwei.me/data/rush/rush_darwin_amd64.tar.gz
- Windows - http://app.shenwei.me/data/rush/rush_windows_amd64.exe.tar.gz 然后拷貝 rush.exe 到 C:WINDOWSsystem32
- Golang - go get -u github.com/shenwei356/rush/
對于 Linux 和 MacOS,下載后記得將文件放到 PATH 變量支持的目錄下或者添加新的 PATH 路徑。
簡單使用
簡單運(yùn)行
$ seq 1 3 | rush echo {} 1 2 3使用 -k 保證輸出順序不變,對比下下面兩個(gè)結(jié)果:
seq 1 10 | rush echo {} 8 1 2 4 7 3 6 5 10 9$ seq 1 10 | rush -k echo {} 1 2 3 4 5 6 7 8 9 10要并行的命令是可以包裹在引號中的,即 seq 1 10 | rush -k "echo {}"。
通過 -i 從文件中讀取數(shù)據(jù)
$ seq 1 3 > data1.txt $ seq 4 6 > data2.txt $ rush echo {} -i data1.txt -i data2.txt 4 6 3 1 2 5這里比較強(qiáng)大在于 -i 可以多次使用。
-r 設(shè)定重試次數(shù)
這個(gè)在處理一些涉及聯(lián)網(wǎng)的操作時(shí)應(yīng)該相當(dāng)有用。
seq 1 | rush 'python unexisted_script.py' -r 1 python: can't open file 'unexisted_script.py': [Errno 2] No such file or directory [WARN] wait cmd #1: python unexisted_script.py: exit status 2 python: can't open file 'unexisted_script.py': [Errno 2] No such file or directory [ERRO] wait cmd #1: python unexisted_script.py: exit status 2一些有用的占位符
- 目錄名 {/}
- 文件名 {%}
- 移除后綴 {^suffix}
- 移除文件名最后的拓展名 {%.}
- 移除文件名所有拓展名 {%:}
分別使用 {.} 和 {:} 會(huì)保留目錄:
$ echo dir.d/file.txt.gz | rush 'echo {.} {:}' dir.d/file.txt dir.d/file- job id {#}
- 域索引 {N}
- 使用正則表達(dá)式提取子串 {@regexp}
-d 自定義域分隔符
$ echo a=b=c | rush 'echo {1} {2} {3}' -d = a b c-D 自定義記錄分隔符
$ echo a b c d | rush -D " " -k 'echo {}' a b c d記錄理解為數(shù)據(jù)的行,域理解為數(shù)據(jù)的列。-n 傳遞多行數(shù)據(jù)到命令
seq 5 | rush -n 2 -k 'echo "{}"; echo' 1 23 45-t 設(shè)定超時(shí)
這個(gè)功能我自己認(rèn)為用處不是很大,但對于處理那種長時(shí)間生信數(shù)據(jù)處理來說有時(shí)候可能會(huì)有發(fā)揮的地方。
$ time seq 1 | rush 'sleep 2; echo {}' -t 1 [ERRO] run cmd #1: sleep 2; echo 1: time out seq 1 0.00s user 0.00s system 66% cpu 0.005 total rush 'sleep 2; echo {}' -t 1 0.01s user 0.01s system 2% cpu 1.022 total總結(jié)
以上是生活随笔為你收集整理的cmd find 命令 多个 或者 关系 +windows_使用 rush 进行命令并行处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 花了一万多买的web前端全套教程,现在分
- 下一篇: 无锡IATF16949认证_无锡IATF