Add some new examples
[zsh-lovers.git] / zsh-lovers.1.txt
index 7394eee..01959af 100644 (file)
@@ -210,6 +210,27 @@ Hint: A list of valid glob Qualifiers can be found in zshexpn(1).
 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
 
@@ -767,7 +788,7 @@ $ autoload -U age
 
 # 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
 -------------------------------------------------------------------------------
 
@@ -829,6 +850,21 @@ ZMV-Examples (require autoload zmv)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *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 *