查找命令奇怪

查找命令奇怪

我发现使用 '寻找' 命令搜索出现某些不一致的单个文件。例如,我想搜索包含单词的特定文件以它的名义。如果我输入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 就会解析*前面的findis,并扩展该 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

相关内容