See ``man 1 zshexpn | less -p'' Qualifiers for details.
-------------------------------------------------------------------------------
+# Get the names of all files that *don't* match a pattern *anywhere* on the
+# file (and without ``-L'' because its GNUish)
+ $ print -rl -- *(.^e{'grep -q pattern $REPLY'})
+ # or
+ $ : *(.e{'grep -q pattern $REPLY || print -r -- $REPLY'})
+
+# random numbers
+ $ echo $[${RANDOM}%1000] # random between 0-999
+ $ echo $[${RANDOM}%11+10] # random between 10-20
+ $ echo ${(l:3::0:)${RANDOM}} # N digits long (3 digits)
+
+# reverse a word
+ $ echo "${(j::)${(@Oa)${(s::):-hello}}}"
+
+# Show newest directory
+ $ ls -ld *(/om[1])
+
+# random array element
+ $ FILES=( .../files/* )
+ $ feh $FILES[$RANDOM%$#FILES+1]
+
# cat first line in all files in this dir
$ for file (*(ND-.)) IFS= read -re < $file
# convert 1st char of a word to uppercase
$ foo="one two three four"
- $ print -r -- "${(C)var}"
+ $ print -r -- "${(C)foo}"
One Two Three Four
-------------------------------------------------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*Note:* '-n' means no execution (just print what would happen). At
-------------------------------------------------------------------------------
+# Remove illegal characters in a fat32 file system. Illegal characters are
+# / : ; * ? " < > |
+# NOTE: ``-Q'' and (D) is to include hidden files.
+ $ unwanted='[:;*?\"<>|]'
+ $ zmv -Q "(**/)(*$~unwanted*)(D)" '$1${2//$~unwanted/}'
+
+# Changing part of a filename (i. e. "file-hell.name" -> "file-heaven.name")
+ $ zmv '(*)hell(*)' '${1}heaven${2}'
+ # or
+ $ zmv '*' '$f:s/hell/heaven/'
+
+# remove round bracket within filenames
+# i. e. foo-(bar).avi -> foo-bar.avi
+ $ zmv '*' '${f//[()]/}'
+
# serially all files (foo.foo > 1.foo, fnord.foo > 2.foo, ..)
$ autoload zmv
$ ls *