diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+1.3.1
+
+* `find` no longer follows symlinks
+* Increase upper bound on `directory`
+
 1.3
 
 * BREAKING CHANGE: Several utilities now produce and consume `Line`s instead of
diff --git a/src/Turtle/Prelude.hs b/src/Turtle/Prelude.hs
--- a/src/Turtle/Prelude.hs
+++ b/src/Turtle/Prelude.hs
@@ -781,11 +781,15 @@
     -- ^ Lines of either standard output (`Right`) or standard error (`Left`)
 inshellWithErr cmd = streamWithErr (Process.shell (unpack cmd))
 
--- | Print to @stdout@
+{-| Print exactly one line to @stdout@
+
+    To print more than one line see `Turtle.Format.printf`, which also supports
+    formatted output
+-}
 echo :: MonadIO io => Line -> io ()
 echo line = liftIO (Text.putStrLn (lineToText line))
 
--- | Print to @stderr@
+-- | Print exactly one line to @stderr@
 err :: MonadIO io => Line -> io ()
 err line = liftIO (Text.hPutStrLn IO.stderr (lineToText line))
 
@@ -1450,10 +1454,15 @@
 -- | Search a directory recursively for all files matching the given `Pattern`
 find :: Pattern a -> FilePath -> Shell FilePath
 find pattern dir = do
-    path <- lstree dir
+    path <- lsif isNotSymlink dir
     Right txt <- return (Filesystem.toText path)
     _:_       <- return (match pattern txt)
     return path
+  where
+    isNotSymlink :: FilePath -> IO Bool
+    isNotSymlink file = do
+      file_stat <- lstat file
+      return (not (PosixCompat.isSymbolicLink file_stat))
 
 -- | A Stream of @\"y\"@s
 yes :: Shell Line
diff --git a/turtle.cabal b/turtle.cabal
--- a/turtle.cabal
+++ b/turtle.cabal
@@ -1,5 +1,5 @@
 Name: turtle
-Version: 1.3.0
+Version: 1.3.1
 Cabal-Version: >=1.10
 Build-Type: Simple
 License: BSD3
@@ -54,7 +54,7 @@
         async                >= 2.0.0.0 && < 2.2 ,
         bytestring           >= 0.9.1.8 && < 0.11,
         clock                >= 0.4.1.2 && < 0.8 ,
-        directory            >= 1.0.7   && < 1.3 ,
+        directory            >= 1.0.7   && < 1.4 ,
         foldl                >= 1.1     && < 1.3 ,
         hostname                           < 1.1 ,
         managed              >= 1.0.3   && < 1.1 ,
