Regular-Expression

僅複製帶有數字名稱的文件夾

  • June 30, 2021

假設我們有一個/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-print,然後將其調整read -r -d '' item為簡單的read -r item. 但是,它可能會以“奇怪”的目錄名稱(例如$'123\ntext\n456'應排除的目錄名稱)意外執行。

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