Shell

在 find 命令中使用“單引號”有什麼區別

  • April 17, 2019
find ~/ -name *test.txt
find ~/ -name '*test.txt'

我需要建構一個範例,其中第一個表單失敗但第二個仍然有效。

引號保護內容免受 shell 萬用字元擴展。執行該命令(或者甚至更簡單,只是echo *test.txt在一個有footest.txt文件的目錄中,然後在一個沒有任何文件結尾的目錄中test.txt,你會看到不同之處。

$ ls
a  b  c  d  e
$ echo *test.txt
*test.txt
$ touch footest.txt
$ echo *test.txt
footest.txt

find 也會發生同樣的事情。

$ set -x
$ find . -name *test.txt
+ find . -name footest.txt
./footest.txt
$ find . -name '*test.txt'
+ find . -name '*test.txt'
./footest.txt
$ touch bartest.txt
+ touch bartest.txt
$ find . -name *test.txt
+ find . -name bartest.txt footest.txt
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
$ find . -name '*test.txt'
+ find . -name '*test.txt'
./bartest.txt
./footest.txt

引用自:https://unix.stackexchange.com/questions/170179