Regular-Expression
如何將文件名的x個字元與cp匹配?
我嘗試使用
cp
部分動態名稱複製文件:cp google71bg2z2850dafxa3.html DESTIONATION
原則上,
71bg2z2850dafxa3
(16個字元)部分是動態的,我不想在任何腳本中手動更改它,如果我不需要,所以我想關於使用正則表達式。在
man cp
我沒有找到關於“正則表達式”或“正則表達式”的任何數據。另外,我嘗試
cp x{2} DESTINATION
了一個名為 的文件x12
,但失敗了。如何將文件名的x個字元與cp匹配?
那就是問;如何將 16 個字元與一些正則表達式匹配?
這可能是一種簡化,但如果您感興趣的所有文件都在一個目錄中,並且如果這些文件的名稱中沒有空格,您可以執行以下操作:
#!/bin/bash destination="/wherever" for i in *; do if echo "${i}" | grep -q -E '^google.{16}\.html$'; then cp "${i}" "${destination}" fi done
在這裡,我
grep
用來進行正則表達式匹配:文件名以 (^
)開頭.{16}
),然後是名稱.html
的結尾 ($
)。Bash 也支持正則表達式匹配,所以你也可以這樣做:
#!/bin/bash destination="/wherever" for i in *; do if [[ "${i}" =~ ^google.{16}\.html$ ]]; then cp "${i}" "${destination}" fi done
這裡的正則表達式和我之前的例子一樣。