Regular-Expression
僅複製帶有數字名稱的文件夾
假設我們有一個
/dir/
包含大量文件夾的目錄。一些文件夾名稱是數字等1, 2, 64346, 2353, 3
。一些包含經典名稱some_name, some_other_name, another_name
等。如何從遠端複製到本地主機目錄,其名稱中只有數字?我正在尋找類似的東西
scp -r username@host:/dir/[all_numerical_names] .
任何想法表示讚賞
我知道沒有辦法將遠端文件/目錄名稱與諸如完全數字的標准進行匹配。但是,由於您正在使用
scp
它似乎是合理的假設ssh
也是可用的。在此基礎上,我將考慮如何解決問題:rhost="user@remoteHost" # Fix as appropriate rpath="/dir" # Likewise ssh -qn "$rhost" "find '$rpath' -maxdepth 1 -type d -print0" | while IFS= read -r -d '' item do if [[ "$item" =~ ^(.*/)?[0-9]+$ ]] then # Numeric directory echo "Copying $item" >&2 # Optional scp -r "$rhost":"$rpath/$item" . # Maybe -a instead of -r fi done
注意事項
- 在遠端系統上需要 GNU
find
(對於-print0
)- 需要
bash
本地系統(用於read
和 RE 比較)- 強烈建議使用基於證書的身份驗證(這樣就不會重複需要密碼)
$rpath
不得包含雙引號或單引號如果您在遠端系統上沒有 GNU
find
,您可以替換-print0
為read -r -d '' item
為簡單的read -r item
. 但是,它可能會以“奇怪”的目錄名稱(例如$'123\ntext\n456'
應排除的目錄名稱)意外執行。