我想使用 bash 命令列來匹配檔案名“ file 9.3.0.zip”。
這是解釋檔案夾結構的測驗腳本:
mkdir -p /tmp/test
touch "/tmp/test/file 9.3.0.zip"
touch "/tmp/test/file 9.3.0-sources.zip"
cd /tmp/test
如果檔案夾不包含任何“ -sources.zip”,那么我可以使用“ echo file*.zip”來匹配“ file 9.3.0.zip”。
但是現在它也包含“ -sources.zip”,我嘗試了以下模式但仍然不起作用:
echo file**!(-sources).zip
這是輸出:
file 9.3.0-sources.zip file 9.3.0.zip
如何在 bash 命令中撰寫模式?
我將在其他 bash 命令中使用此匹配僅一個檔案模式,例如:
unzip file*.zip -d /tmp/other
謝謝。
uj5u.com熱心網友回復:
我認為問題在于*infile*!(-sources).zip可以匹配意味著檔案名的其余部分不是-sources.zip.
這似乎有效,但我還沒有徹底測驗過:
file!(*-sources).zip
這似乎也有效(但我不推薦它!):
!(!(file*.zip)|file*-sources.zip)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/481987.html
