]> git.phdru.name Git - dotfiles.git/blob - .mc/menu
Feat(recode-filenames-recursive): Allow to omit parameters
[dotfiles.git] / .mc / menu
1 shell_patterns=0
2
3 # This is necessary to overcome a bug in mc - without this
4 # mc makes default wrong item
5 :  NOOP
6    :
7
8 @  Do something on all of the file(s) at once
9    CMD=%{Enter command}
10    exec $CMD %s
11
12 + t t
13 @  Do something on the selected files one by one
14    CMD=%{Enter command}
15    for f in %s; do
16      $CMD "$f"
17    done
18
19 + t r
20 p  View the file in a pager
21    exec ${PAGER:-more} %f
22
23 + t r
24 g  Edit the file in gvim
25    gvim %f &
26
27 + t r
28 b  View the file in a browser
29    exec webbrowser file://%d/%f
30
31 + t r
32 = f \.(htm(l?)|txt)$
33 w  View the file in a new browser window
34    exec webbrowser -n file://%d/%f
35
36 + t r
37 t  View the file in a new browser tab
38    exec webbrowser -t file://%d/%f
39
40 += f \.fb2(\.bz2|\.gz|\.zip)?$ | f \.(chm|epub|htm(l?)|txt|rtf)$ & t r
41 f  View fb2/chm/epub with fbreader
42    fbreader %f &
43
44 + t r & f \.fb2(\.bz2|\.gz|\.zip)$
45 H  fb2html
46    case %f in
47      *.fb2.bz2) A="bunzip2 -c" ;;
48      *.fb2.gz) A="gunzip -c" ;;
49      *.fb2.zip) A="unzip -p" ;;
50      *.fb2) A="cat" ;;
51    esac
52    $A %f | xsltproc /usr/local/src/FictionBook/FB2_2_html_ru.xsl - | webstdin -t
53
54 + t r & f \.fb2(\.bz2|\.gz|\.zip)$
55 T  fb2txt
56    case %f in
57      *.fb2.bz2) A="bunzip2 -c" ;;
58      *.fb2.gz) A="gunzip -c" ;;
59      *.fb2.zip) A="unzip -p" ;;
60      *.fb2) A="cat" ;;
61    esac
62    $A %f | xsltproc /usr/local/src/FictionBook/FB2_2_txt_ru.xsl - | webstdin -e txt -t
63
64 += t r & f \.(pdf|PDF|ps|PS)(\.bz2|\.gz)?$
65 e  View pdf/ps
66    qpdfview %f &
67
68 += t r & f \.djvu(\.bz2|\.gz)?$
69 e  View djvu
70    djview %f &
71
72 += t r & f \.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg)$
73 o  View OpenDoc with odt2txt
74    odt2txt %f | ${PAGER:-more}
75
76 + t r & f \.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg|doc|DOC|rtf|docx|DOCX|xls|XLS|xlsx|XLSX)$
77 e  Edit (Open)Docs with libreoffice
78    libreoffice %f &
79
80 += t r & f \.(doc|DOC|rtf)$
81 d  View doc with catdoc
82    catdoc %f | ${PAGER:-more}
83
84 += t r & f \.(docx|DOCX)$
85 d  View docx with docx2txt
86    docx2txt %f - | iconv.py -f utf-8 | ${PAGER:-more}
87
88 + t r & f \.(odt|ott|sxw|stw|ods|ots|sxc|stc|odp|otp|sxi|sti|odg|otg|sxd|std|odb|odf|sxm|odm|sxg|doc|DOC|rtf|docx|DOCX|xls|XLS|xlsx|XLSX)$
89 v  View (Open)Docs with libreoffice
90    #libreoffice --headless --convert-to "txt:Text (encoded):UTF8" %f
91    libreoffice --cat %f | ${PAGER:-more}
92
93 += t r & f \.(xls|XLS)$
94 x  View xls with xls2csv
95    xls2csv %f | ${PAGER:-more}
96
97 + t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$ | t t
98 = t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$
99 i  View image(s) scaled
100    xli -title "`echo %s | sed 's/ /_/g'`" -zoom auto %s &
101
102 + t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$ | t t
103 I  View image(s) full size
104    xli -title "`echo %s | sed 's/ /_/g'`" %s &
105
106 + t r & f \.(bmp|BMP|gif|GIF|jpg|JPG|jpeg|JPEG|pbm|PBM|ppm|PPM|png|PNG|xbm|xpm)$
107 I  Identify image
108    xli -identify %f
109
110 + t r & f \.(ico|jp2|tif|TIF|tiff|TIFF|webp)$ | t t
111 = t r & f \.(ico|jp2|tif|TIF|tiff|TIFF|webp)$
112 I  View icon, JPEG-2000, TIFF, WebP image
113    display %s &
114
115 + t r & f \.(aac|ac3|ape|cue|dts|flac|m3u|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$ | t t
116 a  Add the audiofile(s) or playlist(s)
117    #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi
118    #for f in %s; do
119    #   audtool --playlist-addurl "$f"
120    #done
121    #smplay -add-to-playlist %s &
122    deadbeef --queue %s &
123
124 + t r & f \.(aac|ac3|ape|cue|dts|flac|m3u|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$ | t t
125 = t r & f \.(aac|ac3|ape|cue|dts|flac|m3u|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$
126 p  Load the audiofile(s) or playlist(s)
127    #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi
128    #audtool --playlist-clear
129    #for f in %s; do
130    #   audtool --playlist-addurl "$f"
131    #done
132    #smplayer -send-action pl_remove_all
133    #smplay -add-to-playlist %s &
134    deadbeef --queue %s &
135
136 + t r & f \.(aac|ac3|ape|cue|dts|flac|m3u|mka|mp3|MP3|ogg|OGG|pls|WAV|wav|wv)$ | t t
137 P  Play the audiofile(s) or playlist(s)
138    #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi
139    #audtool --playlist-clear
140    #for f in %s; do
141    #   audtool --playlist-addurl "$f"
142    #done
143    #exec audtool --playback-play
144    #mplay -playlist %f &
145    #smplay %s &
146    deadbeef %s &
147    #exec mediaplayer_open %f
148
149 + t r & f \.m3u
150 R  Play the playlist in random order
151    "$HOME"/admin/prog/audio-cdr-video/audio/shuffle-playlist.py %f random-playlist-tmp.m3u
152    #if [ "`audtool --get-volume`" -eq 0 ]; then cgmem_nice 500 audacious & sleep 3; fi
153    #audtool --playlist-clear
154    #audtool --playlist-addurl random-playlist-tmp.m3u
155    #audtool --playback-play
156    #mplay -playlist random-playlist-tmp.m3u &
157    #smplay random-playlist-tmp.m3u &
158    #smplay -actions pl_shuffle %f &
159    deadbeef --queue random-playlist-tmp.m3u & deadbeef --play
160    #mediaplayer_open random-playlist-tmp.m3u
161    (sleep 5; exec rm random-playlist-tmp.m3u) &
162
163 + f \.(aac|ac3|ape|cue|dts|flac|m3u|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t d | t t
164 s  Play audio/video file(s) or directory with smplayer
165    smplay %s &
166
167 + t d & f (video_ts|VIDEO_TS)$
168 c  Play the current directory with smplayer
169    smplay . &
170
171 + t r & f \.(m3u|mp3|MP3|cue|aac|ac3|ape|dts|flac|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$
172 i  Audio/video info
173    exec "$HOME"/.config/mpv/mpv_identify.sh %f
174
175 + t d & f (video_ts|VIDEO_TS)$
176 i  DVD info
177    exec "$HOME"/.config/mpv/mpv_identify.sh .
178
179 + f \.(aac|ac3|ape|cue|dts|flac|m3u|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t d | t t
180 = f \.(aac|ac3|ape|cue|dts|flac|m3u|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$
181 m  Play video file(s) with mpv
182    mplay %s &
183
184 + f \.(aac|ac3|ape|cue|dts|flac|m3u|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t d | t t
185 = f \.(aac|ac3|ape|cue|dts|flac|m3u|mp3|MP3|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|iso|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$
186 m  Play video file(s) with mpv asking audio volume
187    AUDIO_VOLUME=%{Enter volume}
188    AUDIO_VOLUME=$AUDIO_VOLUME mplay %s &
189
190 + f \.(m3u|mp3|MP3|cue|aac|ac3|ape|dts|flac|ogg|OGG|pls|WAV|wav|wv|avi|AVI|flv|m2ts|m4v|mka|mkv|MKV|mov|MOV|mp4|MP4|mpg|MPG|vob|VOB|wma|wmv)$ | t t
191 M  Play audio/video with mpv GUI
192    gmplay %s &
193
194 += t d & f (video_ts|VIDEO_TS)$
195 d  Play DVD directory with mpv
196    mplay -dvd-device . dvd:// &
197
198 + t d & f (video_ts|VIDEO_TS)$
199 D  Play DVD directory with mpv GUI
200    gmplay -dvd-device . dvd:// &
201
202 + t d & f (video_ts|VIDEO_TS)$
203 t  Play DVD title with mpv
204    title=%{Enter title}
205    mplay -dvd-device . dvd://"$title" &
206
207 + t d & f (video_ts|VIDEO_TS)$
208 T  Play DVD title with mpv GUI
209    title=%{Enter title}
210    gmplay -dvd-device . dvd://"$title" &
211
212 + t d
213 p  Play directory with mpv
214    mplay %f/* &
215
216 + t d
217 P  Play directory with mpv GUI
218    gmplay %f/* &
219
220 + t d & f ^\.\.$
221 b  Compress the current subdirectory to tar.bz2
222    Pwd="`basename %d /`"
223    echo -n "Name of the distribution file (without extension) [$Pwd]: "
224    read tar
225    if [ "$tar"x = x ]; then tar="$Pwd"; fi
226    cd .. && tar cvf - "$Pwd" | bzip2 -f9 > "$tar".tar.bz2 &&
227    echo ../"$tar".tar.bz2 created.
228
229 + t d & f ^\.\.$
230 g  Compress the current subdirectory to tar.gz
231    Pwd="`basename %d /`"
232    echo -n "Name of the distribution file (without extension) [$Pwd]: "
233    read tar
234    if [ "$tar"x = x ]; then tar="$Pwd"; fi
235    cd .. && tar cvf - "$Pwd" | gzip -f9 > "$tar".tar.gz &&
236    echo ../"$tar".tar.gz created.
237
238 + t d & f ^\.\.$
239 l  Compress the current subdirectory to tar.lzma
240    Pwd="`basename %d /`"
241    echo -n "Name of the distribution file (without extension) [$Pwd]: "
242    read tar
243    if [ "$tar"x = x ]; then tar="$Pwd"; fi
244    cd .. && tar cvf - "$Pwd" | lzma -f9 > "$tar".tar.lzma &&
245    echo ../"$tar".tar.lzma created.
246
247 + t d & f ^\.\.$
248 x  Compress the current subdirectory to tar.xz
249    Pwd="`basename %d /`"
250    echo -n "Name of the distribution file (without extension) [$Pwd]: "
251    read tar
252    if [ "$tar"x = x ]; then tar="$Pwd"; fi
253    cd .. && tar cvf - "$Pwd" | xz -f9 > "$tar".tar.xz &&
254    echo ../"$tar".tar.xz created.
255
256 + t d & f ^\.\.$
257 t  Compress the current subdirectory to tar
258    Pwd="`basename %d /`"
259    echo -n "Name of the distribution file (without extension) [$Pwd]: "
260    read tar
261    if [ "$tar"x = x ]; then tar="$Pwd"; fi
262    cd .. && tar cvf - "$Pwd" > "$tar".tar &&
263    echo ../"$tar".tar created.
264
265 + t d & f ^\.\.$
266 z  Compress the current subdirectory to zip
267    Pwd="`basename %d /`"
268    echo -n "Name of the distribution file (without extension) [$Pwd]: "
269    read zip
270    if [ "$zip"x = x ]; then zip="$Pwd"; fi
271    cd .. && zip -r9 "$zip".zip "$Pwd" &&
272    echo ../"$zip".zip created.
273
274 + t d & f ^\.\.$
275 y  Compress the current subdirectory to zip recoding filenames
276    Pwd="`basename %d /`"
277    echo -n "Name of the distribution file (without extension) [$Pwd]: "
278    read zip
279    if [ "$zip"x = x ]; then zip="$Pwd"; fi
280    cd .. && zip.py "$zip".zip "$Pwd" &&
281    echo ../"$zip".zip created.
282
283 + t d & f ^\.\.$
284 7  Compress the current subdirectory to 7z
285    Pwd="`basename %d /`"
286    echo -n "Name of the distribution file (without extension) [$Pwd]: "
287    read ar
288    if [ "$ar"x = x ]; then ar="$Pwd"; fi
289    cd .. && 7zr a "$ar".7z "$Pwd" &&
290    echo ../"$ar".7z created.
291
292 + ! f \.(bz2|gz|lz|lzma|7z|xz|zip|ZIP)$ & t r
293 z  bzip2 the file
294    exec bzip2 -9 %f
295
296 + ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
297 z  gzip the file
298    exec gzip -9 %f
299
300 + ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
301 z  lzip the file
302    exec lzip -9 %f
303
304 + ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
305 z  lzma the file
306    exec lzma -9 %f
307
308 + ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
309 z  7z the file/directory
310    exec 7zr a %f.7z %f
311
312 + ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
313 z  xz the file
314    exec xz -9 %f
315
316 + ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
317 z  zip the file/directory
318    exec zip -r9 %f.zip %f
319
320 + ! f \.(z|Z|bz2|gz|lz|lzma)|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
321 y  zip the file/directory recoding filename(s)
322    exec zip.py %f.zip %f
323
324 + t t
325 Z  zip selected files/directories
326    ZIP=%{Enter zip name}
327    exec zip -r9 "$ZIP" %s
328
329 + t t
330 Y  zip selected files/directories recoding filenames
331    ZIP=%{Enter zip name}
332    exec zip.py "$ZIP" %s
333
334 + f \.(tar\.(z|Z|bz2|gz|lz|lzma))|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & t r
335 n  Create a directory for this archive
336    case %f in
337      *.tar.Z)    D="`basename %f .tar.Z`";;
338      *.tar.bz2)  D="`basename %f .tar.bz2`";;
339      *.tar.gz)   D="`basename %f .tar.gz`";;
340      *.tbz2)     D="`basename %f .tbz2`";;
341      *.tgz)      D="`basename %f .tgz`";;
342      *.tz)       D="`basename %f .tz`";;
343      *.tar.lz)   D="`basename %f .tar.lz`";;
344      *.tar.lzma) D="`basename %f .tar.lzma`";;
345      *.tar.7z)   D="`basename %f .tar.7z`";;
346      *.zip)      D="`basename %f .zip`";;
347      *.ZIP)      D="`basename %f .ZIP`";;
348      *.rar)      D="`basename %f .rar`";;
349      *.RAR)      D="`basename %f .RAR`";;
350      *.xz)       D="`basename %f .xz`";;
351      *.7z)       D="`basename %f .7z`";;
352    esac
353    exec mkdir "$D"
354
355 + F \.(tar\.(z|Z|bz2|gz|lz|lzma))|(tbz2|tgz|tz|zip|ZIP|rar|RAR|xz|7z)$ & T r
356 N  Create a directory for the other archive
357    case %D/%F in
358      *.tar.Z)    D="`basename %F .tar.Z`";;
359      *.tar.bz2)  D="`basename %F .tar.bz2`";;
360      *.tar.gz)   D="`basename %F .tar.gz`";;
361      *.tbz2)     D="`basename %F .tbz2`";;
362      *.tgz)      D="`basename %F .tgz`";;
363      *.tz)       D="`basename %F .tz`";;
364      *.tar.lz)   D="`basename %F .tar.lz`";;
365      *.tar.lzma) D="`basename %F .tar.lzma`";;
366      *.tar.7z)   D="`basename %F .tar.7z`";;
367      *.zip)      D="`basename %F .zip`";;
368      *.ZIP)      D="`basename %F .ZIP`";;
369      *.rar)      D="`basename %F .rar`";;
370      *.RAR)      D="`basename %F .RAR`";;
371      *.xz)       D="`basename %F .xz`";;
372      *.7z)       D="`basename %F .7z`";;
373    esac
374    exec mkdir "$D"
375
376 + f \.(tar\.(z|Z|bz2|gz|lz|lzma|7z|xz))|(tbz2|tgz|tz)$ & t r
377 x  Extract the contents of a compressed tar file
378    unset PRG
379    case %f in
380       *.tar.bz2|*.tbz2)
381          PRG="bunzip2 -c"
382       ;;
383       *.tar.gz|*.tar.z|*.tgz|*.tz|*.tar.Z)
384          PRG="gzip -dc"
385       ;;
386       *.tar.lz)
387          PRG="lzip -dc"
388       ;;
389       *.tar.lzma)
390          PRG="lzma -dc"
391       ;;
392       *.tar.7z)
393          PRG="7zr e -so"
394       ;;
395       *.tar.xz)
396          PRG="xz -dc"
397       ;;
398       *)
399       exit 1
400       ;;
401    esac
402    $PRG %f | tar xvpf -
403
404 + F \.(tar\.(z|Z|bz2|gz|lz|lzma|7z|xz))|(tbz2|tgz|tz)$ & T r
405 X  Extract the contents of an other compressed tar file
406    unset PRG
407    case %F in
408       *.tar.bz2|*.tbz2)
409          PRG="bunzip2 -c"
410       ;;
411       *.tar.gz|*.tar.z|*.tgz|*.tz|*.tar.Z)
412          PRG="gzip -dc"
413       ;;
414       *.tar.lz)
415          PRG="lzip -dc"
416       ;;
417       *.tar.lzma)
418          PRG="lzma -dc"
419       ;;
420       *.tar.7z)
421          PRG="7zr e -so"
422       ;;
423       *.tar.xz)
424          PRG="xz -dc"
425       ;;
426       *)
427       exit 1
428       ;;
429    esac
430    $PRG %D/%F | tar xvpf -
431
432 + f \.(bz2|egg|gz|lz|lzma|7z|xz|tar|whl|zip|ZIP|rar|RAR)$ & t r
433 x  Extract a compressed file
434    case %f in
435      *.bz2)  P="bzip2 -d";;
436      *.gz)   P="gzip -d";;
437      *.lz)   P="lzip -d";;
438      *.lzma) P="lzma -d";;
439      *.7z)   P="7zr x";;
440      *.xz)   P="xz -d";;
441      *.tar)  P="tar xvpf";;
442      *.egg|*.whl|*.zip|*.ZIP) P="unzip";;
443      *.rar|*.RAR) P="unrar x -y";;
444    esac
445    exec $P %f
446
447 + F \.(bz2|egg|gz|lz|lzma|7z|xz|tar|whl|zip|ZIP|rar|RAR)$ & T r
448 X  Extract another compressed file
449    case %F in
450      *.bz2)  P="bzip2 -d";;
451      *.gz)   P="gzip -d";;
452      *.lz)   P="lzip -d";;
453      *.lzma) P="lzma -d";;
454      *.7z)   P="7zr x";;
455      *.xz)   P="xz -d";;
456      *.tar)  P="tar xvpf";;
457      *.egg|*.whl|*.zip|*.ZIP) P="unzip";;
458      *.rar|*.RAR) P="unrar x -y";;
459    esac
460    exec $P %D/%F
461
462 + t r & f \.(zip|ZIP)$
463 y  Extract from zip recoding filenames
464    exec unzip.py %f
465
466 + T r & F \.(zip|ZIP)$
467 Y  Extract from other zip recoding filenames
468    exec unzip.py %D/%F
469
470 + t r
471 v  View via mailcap
472    exec see %f
473
474 + t r
475 c  Compare the file
476    exec cmp %D/%f %f
477
478 + t r & T r
479 C  Compare these files
480    exec cmp %D/%F %f
481
482 + t r
483 d  Diff the file
484    exec diff -u --speed-large-files %D/%f %f
485
486 + t r & T r
487 D  Diff these files
488    exec diff -u --speed-large-files %D/%F %f
489
490 + t r
491 v  vimdiff the file
492    exec vim -d %D/%f %f
493
494 + t r & T r
495 V  vimdiff these files
496    exec vim -d %D/%F %f
497
498 + t d & ! f ^\.\.$
499 d  Diff the directory
500    exec diff -ru --speed-large-files \
501       -x CVS -x .git -x .hg -x .svn -x '*.py[co]' -x __pycache__ %D/%f %f
502
503 + t d & T d & ! F ^\.\.$
504 D  Diff these directories
505    exec diff -ru --speed-large-files \
506       -x CVS -x .git -x .hg -x .svn -x '*.py[co]' -x __pycache__ %D/%F %f
507
508 += f \.(asc|gpg|sig(n)?)$ & t r
509 v  Verify signature
510    exec gpg --verify %f
511
512 += f \.[1-8]$ | f \.man$ & t r
513 1  Display the file with roff -man
514    %view nroff -man %f
515
516 m  View a manual page
517    MAN=%{Enter manual name}
518    %view man -P cat $MAN
519
520 + t r | t d | t t
521 r  rsync the file(s) there
522    rsync -ahPv --del %s %D