WinSCP上傳下載過濾指定目錄和文件


什么是WinSCP

WinSCP 是一個 Windows 環境下使用的 SSH 的開源圖形化 SFTP 客戶端,同時支持SCP協議,它的主要功能是在本地與遠程計算機間安全地復制文件,並且可以直接編輯文件。這個工具是我們在進行開發和運維過程中常用的工具。

聲明

此文是對於WinSCP官方文檔的掩碼部分的翻譯,如理解和翻譯不到位請見諒,官方文檔原文見參考。

上傳下載過濾文件

通過設置文件掩碼,可以上傳/下載時指定目錄/文件,上傳/下載時過濾指定的目錄。

掩碼

基本語法

可以使用的匹配模式

模式 描述 示例
* 匹配任意數量(包括零)的任意字符 *.doc; about*.html
? 恰好匹配一個任意字符 photo????.jpg
[abc] 匹配集合中的一個字符 index_[abc].html
[a-z] 匹配范圍內的一個字符 index_[a-z].html

其他的字符將會被作為普通字符進行處理(除了下面描述的特殊字符)。

大小和時間約束

文件掩碼可以使用如下的模式去通過時間和大小進行約束。

模式 描述 示例
>size[KMG] 匹配比給定大小大的文件,注意目錄的大小默認是0,可以選擇的單位有K,M,G *.bin>1M
<size[KMG] 匹配比給定大小小的文件 <1G
>yyyy-mm-dd[ hh:mm[:ss]] 匹配最后修改時間在給定日期或者時間之后的文件 >2012-01-01
>2012-02-29 08:47
>time[YDHNS][S] 匹配最后修改時間在指定時間區間內的文件,不能用於目錄。可以用的單位有Y(年),D(天),H(小時),N(分鍾),S(描述)。可選的S后綴表示將間隔前的時間舍入到間隔單位的開始,例如2DS指的是前天的開始(午夜)。0HS指的是當前小時的開始,關鍵字today,yesterday可以使用0DS,1DS一次替代 *.doc>1Y
>2HS
>yesterday
<yyyy-mm-dd[ hh:mm[:ss]] 匹配最后修改時間在給定的日期或者時間之前的文件 *.doc<2012-02-29 08:54:21
<time[YDHNS][S] 匹配最后修改時間在給定的時間區間之前的文件 <60D

同樣可以使用>=<=操作符。對操作符(<>)進行轉義只需要在它之前在寫一個重復一個相同的操作符即可,例如filewith<<lessthan

想要組合約束,只需要將一個約束添加到列外一個約束之后,並且不要任何的分割符或者使用空格。例如需要選擇創建於2013年的doc文件:*.doc>=2013-01-01<=2013-12-31

組合約束

在大多數上下文中,可以使用分號;或者逗號,來組合幾個掩碼。例如*.jpg; *.gif包含所有的JPGGIF圖片。對分割符進行轉義同樣只需要在其前面重復一個相同的符號即可,如filewith,,comma

包含和排除掩碼

掩碼可以通過使用|分割來組合包含和排除掩碼。例如*.jpg; *.gif | 2010*; 2011*這個掩碼包含所有的JPGGIF圖片,但是排除以2010和2011開頭的。

包含和排除部分都可以為空,分別表明包含所有或者什么也不排除。當包含部分為空的時候,掩碼以|開頭;當排除部分為空時,可以省略掉末尾的|。排除掩碼的優先級高於包含掩碼,例如當文件同時匹配排除掩碼和包含掩碼時,那么它將會被排除。從列一方面來說,使用包含掩碼有效地排除了所有不選擇的文件和目錄。轉義同樣只需要在其前面重復一個相同的符號即可,如filewith||pipe

目錄掩碼

對目錄使用掩碼,只需要在末尾添加反斜杠/即可,如images/。掩碼*/匹配所有的目錄。
注意如果使用文件掩碼編輯對話框的話,目錄掩碼的末尾會自動添加/。讓操作為非遞歸的話,使用掩碼*/,注意不能包含其他的掩碼,如|*/這里的|表名它是一個排除掩碼。目錄掩碼是遞歸的,例如mages/即匹配目錄/home/martin/images/也匹配目錄/home/martin/images/avatars/。在傳輸和同步時,文件和目錄是遞歸處理的,當一個目錄被排除,那么這個排除目錄內的文件或者子目錄是不會進行文件掩碼計算的,他們也和包含他的目錄一樣被排除。

路徑掩碼

當選擇文件並且對於選擇的目錄敏感時,可以使用路徑掩碼。路徑掩碼和文件名掩碼由/進行分割,例如/home/martinp/*.txt掩碼匹配這個目錄下面的所有文本文件。匹配包含子目錄的所有文本的掩碼,我們可以使用/home/martinp/*.txt; /home/martinp/*/*.txt/home/martinp*/*.txt/home/martinp/*/*.txt相似,但是精確到更低。

路徑掩碼是完全匹配全路徑的,並不是匹配相對路徑,例如public_html/wiki/並不匹配/home/martinp/public_html/wiki目錄,即使是/home/martinp/是文件傳輸或者同步的根目錄。部分路徑掩碼匹配絕對路徑應當是*/public_html/wiki/

對於部分路徑掩碼使用\/沒有區別,這種掩碼對於本地路徑和遠端路徑都是工作的,例如*/public_html/*.bak將會即匹配D:\Documents\public_html\也匹配/home/martinp/public_html/

也可以指定全路徑去匹配指定的文件或者目錄,無論本地還是遠端,例如想只匹配指定的.csv目錄,而不是所有的.csv目錄,可以使用/home/martinp/data/.csv/掩碼替代.csv目錄。

例外

通常掩碼*.*是一個例外,它匹配任意的文件或者目錄,即使不包含任意的.。相反*.匹配任何不帶拓展的文件或者目錄。

參考

https://winscp.net/eng/docs/ui_editmask
https://winscp.net/eng/docs/file_mask


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM