請考慮我在名爲test
的文件夾中有許多shell腳本。我想執行除了一個特定文件以外的所有文件。我該怎麼辦?重新定位文件或手動執行文件不是一種選擇。有沒有什麼辦法可以在單線上做到這一點。或者,可以添加一些sh path/to/test/*.sh
,它執行所有文件?命令行:使用通配符時忽略特定文件
回答
for file in test/*; do
[ "$file" != "test/do-not-run.sh" ] && sh "$file"
done
如果您正在使用bash
,您可以使用擴展模式,以跳過不需要的腳本:
shopt -s extglob
for file in test/!(do-not-run).sh; do
sh "$file"
done
+1用於extglob-usage :-) – plundra
for FILE in `ls "$YOURPATH"` ; do
test "$FILE" != "do-not-run.sh" && sh "$YOURPATH/$FILE";
done
如果有任何包含空格的路徑,解析'ls'的輸出將會失敗。 – chepner
find path/to/test -name "*.sh" \! -name $pattern_for_unwanted_scripts -exec {} \;
查找將遞歸執行中到底該目錄中的所有條目在.sh(-name「* .sh」)並且不匹配不需要的模式(\!-name $ pattern_for_unwanted_scripts)。
在bash
,只要你做shopt -s extglob
您可以使用「擴展通配符」,允許使用哪些匹配除了給定的模式之一什麼!(pattern-list)
。
你的情況:
shopt -s extglob
for f in !(do-not-run.sh); do if [ "${f##*.}" == "sh" ]; then sh $f; fi; done
這將匹配不是「do-not-run.sh」的每個文件。 – chepner
是的你是對的,在'.sh後綴'上加了測試 –
或者,把擴展名移出負模式:'!(不要運行).sh'匹配所有的「* .sh」文件,除了「do -not-run.sh」 –
- 1. 批處理命令忽略dir命令後的特定文件?
- 2. 使用latexpdf忽略命令行設置
- 3. Git忽略特定文件
- 4. 忽略文件中的特定行
- 5. 調試時忽略特定文件
- 6. 通過命令提示符運行特定的測試文件
- 7. Rar命令 - 忽略某些文件夾
- 8. 使用diff命令,忽略行末的字符
- 9. Mercurial - 用戶特定的忽略文件
- 10. 忽略特定通知
- 11. 使用Git過濾器忽略JSON文件中的特定行
- 12. 使用bower-installer時忽略特定主文件
- 13. 如何使用`zip`命令壓縮文件時忽略.DS_Store文件?
- 14. 通過命令行導入到MySQL時忽略列數據
- 15. Solr,忽略特定字段的通配符查詢
- 16. 命令在批處理文件螞蟻命令後忽略
- 17. 擊命令行重命名通配符
- 18. 通過匹配文本忽略特定的JS錯誤
- 19. 忽略臨時文件時使用Ghostscript
- 20. 通配符點星忽略分隔符
- 21. ]命令和命令> [忽略輸出]
- 22. TortoiseGit的「清理」會忽略文件夾,命令行不會
- 23. Windows批處理命令忽略一些文件行?
- 24. Bash:使用文件名作爲通配符的命令
- 25. 批處理文件中的Set命令中使用通配符
- 26. 使用以空格的文件名的Makefile通配符命令
- 27. 在連接命令中忽略頭文件(過時的coreutils)
- 28. 使用補丁命令忽略標題不匹配拒絕
- 29. 使用通配符導入符號,但重命名或忽略其中一些
- 30. 自定義命令忽略熱鍵
你的意思是我想包括除一人外的所有文件? –