This is an old revision of the document!
Masks
To use the following features of WinSCP you need to specify a mask (wildcard) to select files (or other things):
- Text file mask for text mode transfers.
- File mask for transfers and synchronization.
- Selecting/unselecting files by file mask.
- Filtering files in file panel.
- Defining autoselection rule for transfer settings preset.
- Defining autoselection mask for editors.
- Various script commands.
TransferOptions.FileMask
in .NET assembly.
Advertisement
You can use File Mask dialog to help you with assembling the mask.
- Basic Syntax
- Size and Time Constraints
- Combining Masks
- Include and Exclude Masks
- Directory Mask
- Path Mask
- Exceptions
Basic Syntax
When specifying the mask you can use following patterns:
Pattern | Meaning | Example |
---|---|---|
* |
Matches any number (including zero) of arbitrary characters. | *.doc; about*.html |
? |
Matches exactly one arbitrary character. | photo????.jpg |
[abc] |
Matches one character from the set. | index_[abc].html |
[a-z] |
Matches one character from the range. | index_[a-z].html |
All other characters are treated literally (except for special characters used in the constructs described below).
Advertisement
To escape character with special meaning in patterns (*?[
) surround it by set pattern, e.g. filewithstar[*]
.
Size and Time Constraints
File mask can be followed by these size and time constraints:
Pattern | Meaning | Example |
---|---|---|
>size[KMG] |
Matches files larger than size . Following units can be used: K (Kilobyte), M (Megabyte) or G (Gigabyte). |
*.bin>1M |
<size[KMG] |
Matches files smaller than size . |
<1G |
>yyyy-mm-dd[ hh:mm[:ss]] |
Matches files modified the last time after the date or time (i.e. “newer than”). | >2012-01-01 , >2012-02-29 08:47 |
>time[YDHNS] |
Matches files modified the last time within specified interval (i.e. “newer than”). One of the following units must be used: Y (years), D (days), H (hours), N (minutes) or S (seconds). |
*.doc>1Y |
<yyyy-mm-dd[ hh:mm[:ss]] |
Matches files modified the last time before the date or time (i.e. “older than”). | *.doc<2012-02-29 08:54:21 |
<time[YDHNS] |
Matches files modified the last time before specified interval (i.e. “older than”). | <60D |
It is also possible to use operators >=
and <=
.
To escape operator character (<>
) double it, e.g. filewith<<lessthan
.
Combining Masks
In most contexts, you can combine several masks using semicolon (;
) or comma (,
). You cannot use this in source parameters of script commands and .NET assembly methods.1
For example following mask includes all JPG and GIF images: *.jpg; *.gif
.
To escape separator character double it, e.g. filewith,,comma
.
Include and Exclude Masks
Mask can combine include and exclude mask separated by pipe (|
).
For example following mask includes all JPG and GIF images, but excludes those starting with 2010
and 2011
: *.jpg; *.gif | 2010*; 2011*
.
Both include and exclude part can be empty, denoting that everything is included or nothing is excluded, respectively. When include part is empty, masks starts with pipe straight away. When exclude part is empty, you can omit the trailing pipe.
Exclude mask takes precedence over include mask. I.e. when the same file is matched by both the exclude and include mask, it is excluded.
To escape pipe character double it, e.g. filewith||pipe
.
Directory Mask
To use the mask for directories, append a slash to the end, e.g. images/
. The mask */
matches any directory.
Advertisement
Note that when using File Mask dialog, the trailing slash for directory masks is appended automatically.
To make operation non-recursive use exclude mask */
2.
Directory masks are recursive. E.g. mask images/
matches directories /home/martin/images/
as well as /home/martin/images/avatars/
.
Path Mask
When a mask selects files and it makes sense to select them based on directory, you can extend the mask with a path mask. You should separate the path mask from the filename mask by a slash. For example mask /home/martinp/*.txt
matches all text files within the directory. To match all text files within subtree, use mask /home/martinp/*.txt; /home/martinp/*/*.txt
3.
The path mask is matched against full path, i.e. not against path relative path to a root of file transfer or synchronization. E.g. mask public_html/wiki/
does not match /home/martinp/public_html/wiki
directory, even if the root of file transfer or synchronization is /home/martinp
. Partial path mask that matches an absolute path may look like */public_html/wiki/
.
For a partial path mask it makes no difference whether you use back (\
) or forward slashes (/
); the mask will always work for both local and remote paths. For example, a mask */public_html/*.bak
will match backup files both in D:\Documents\public_html\
and /home/martinp/public_html/
.
You can also specify full path to a specific file or directory, both local and remote. For example if you want to match only a specific .csv
directory, not all, use /home/martinp/data/.csv/
instead of .csv/
.
Exceptions
For convenience, masks *.*
and *.
are exceptions matching any file and any file without an extension, respectively, even if its name does not include any dot.
- Note that this restriction does not apply to
-filemask
switch in scripting andTransferOptions.FileMask
in .NET assembly.Back - Full inline file mask syntax, in case there’s no other mask involved, is
|*/
, where the|
denotes a start of an exclude mask.Back - Simpler, but less precise, form would be
/home/martinp*/*.txt
Back