我发现使用 '寻找' 命令搜索出现某些不一致的单个文件。例如,我想搜索包含单词的特定文件纸以它的名义。如果我输入sudo find /mnt -iname *paper*
输出是:-
/mnt/data/MyPhotos/Wallpapers
这很公平,只是这不是我想要的。但如果我输入 sudo find /mnt -iname "*paper*"
输出变成:-
/mnt/data/MyMusic/FLV-Music/Joe_Jackson_Sunday_Papers_small.mp4
/mnt/data/MyMusic/FLV-Music/Status_Quo_Paper_Plane_medium.mp4
/mnt/data/MyPhotos/Wallpapers
现在我看到了我正在搜索的文件(第二个)。那么为什么在第一种情况下只有最后一个文件显示为输出,而在第二种情况下所有文件都包含字符串paper
在他们的名字中是输出。为什么引号在这里会有所不同。
答案1
如果没有引号,shell 就会解析*
前面的find
is,并扩展该 glob(如果可以的话)。使用引号,就不会发生通配符。
展示:
$ tree
.
├── Wallpapers
└── stuff
├── Newspapers
├── Wallflowers
└── Wallpapers
2 directories, 3 files
$ find stuff -iname *paper*
stuff/Wallpapers
$ find stuff -iname '*paper*'
stuff/Wallpapers
stuff/Newspapers