This is an old revision of the document!

Useful Custom Commands

This is list of custom commands that users of WinSCP found useful. You are encouraged to add your own. Also check the built-in examples.

Advertisement

Archiving

Tar/Gzip

tar -xvzf --directory="!?&Extract to which directory:?.!" "!"
tar -czvf "!?&Enter an Archive Name:?archive.tgz!"
  --exclude="!?&Exclude files matching pattern:?*.exe!"
  !&

Zip

To unpack to the current directory:

unzip "!"

To unpack to an alternate directory:

unzip -d "!?&Extract to directory:?.!" "!"

Advertisement

To create an archive:

zip "!?&Enter an Archive Name:?archive.zip!" !&

Rar

rar a -ep "!?&Enter an Archive Name:?archive.rar!" !&

Quick Deleting

Use following command to quickly delete large directory structures:

rm -f -r "!"

The same command can ask for confirmation before deleting:

test "!?Do you really want to delete ?no!" == "yes" && rm -rf !&

Changing Ownership

Use following command if current protocol does not allow changing ownership:

chown "!?New owner:?!" !&

To change group use chgrp instead of chown.

Or use this command:

chown !?New owner (and group: user.group):! "!/!"

Check “Apply to directories” and “Execute recursively” to use it for directories and all subdirectories and files.

URL Address of Selected File

Example shows how to launch simple PHP script that maps file path to URL.

echo '<?="http://www.example.com".
str_replace("home/user/public_html", "~user", "'`pwd`'").
"/!\n"?>' | php -q

Advertisement

Hints:

  • Note that the above should be entered as one line!
  • Do not forget to check custom command option Show results in terminal or Copy results to clipboard, otherwise you will not get the results. You may also want to use the command for directories, check Apply to directories too.
  • For your particular use, just replace http://www.example.com with right URL prefix, home/user/public_html with right path prefix and ~user with right URL replacement (it can even be empty in some cases).
  • If you do mapping like above, i.e. for server containing multiple user’s homepages, you can make it universal by replacing user with '`whoami`'.

Another example using shell commands only, in case PHP is unavailable.

echo 'http://www.example.com'`pwd`'!' | sed s#home/lgtngstk/public_html#~user#

Templates

cp /path/to/template.html "!?&New HTML file:?!"

Viewing End of a File (log)

tail "!"

You may specify further how much to transfer, e.g.

tail --lines 2000 "!"

Check custom command option Show results in terminal.

find . -name "!?Search for files:?!"

Check custom command option Show results in terminal.

Searching for a text/string within a directory

grep -H -r "!?Search for text:?!" *  | cut -d: -f1

Advertisement

Check custom command option Show results in terminal.

Backup

Backup a File with Current Date and Time

cp ! $(echo "!" | sed "s/\..*$//").$(date '+%Y-%m-%d_%H-%M').$(echo ! | awk -F"." '{ print $NF }')

Rename a File with Current Date and Time

mv ! $(echo "!" | sed "s/\..*$//").$(date '+%Y-%m-%d_%H-%M').$(echo ! | awk -F"." '{ print $NF }')

Above does not work.

Last modified: by 77.177.39.214