Regular-Expression

在 cp 中使用正則表達式

  • August 3, 2020

這是一個簡單的問題。我正在嘗試將目前目錄中以“axis-2”開頭並以“.jar”結尾的所有文件複製到目標目錄中,假設它是 ~/MyDirectory。我的第一個想法是嘗試

cp '^axis2.*jar$' ~/MyDirectory

但這行不通。我什至不確定我是否可以在 cp 中使用正則表達式。我也有一段時間沒有真正使用過正則表達式,我的語法可能完全不正確。當我嘗試這個 cp 時,只會輸出“沒有這樣的文件或目錄”錯誤消息。有人對如何解決這個問題有任何建議嗎?謝謝!

UNIX shell 使用glob 模式,而不是正則表達式。因此,如果要匹配以 開頭axis2和結尾的文件名.jar,請使用:

cp axis2*.jar /destination/directory

如果您有可用的 GNUfind和 GNU cp,則可以使用正則表達式,如下所示:

find . -maxdepth 1 -regextype posix-basic -regex '.*/axis2[^/]*jar$' \
      -exec cp -t ~/MyDirectory {} +

如果 glob 模式和 bash 擴展 glob 模式都不能滿足您的需求,這會很方便。

引用自:https://unix.stackexchange.com/questions/24242