![如何打开文件名开头带有破折号“-”的多个文件?](https://linux22.com/image/129215/%E5%A6%82%E4%BD%95%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6%E5%90%8D%E5%BC%80%E5%A4%B4%E5%B8%A6%E6%9C%89%E7%A0%B4%E6%8A%98%E5%8F%B7%E2%80%9C-%E2%80%9D%E7%9A%84%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我可以使用一次打开文件,cat -- -file00
但我想一次打开多个文件。尝试使用find,无法弄清楚。
find ./ -name '*.txt' exec cat {} \;
find ./ -name '*.txt' exec grep 'inhere' {} \;
这些都不起作用。我在目录中有多个文件,格式如下:-file00 -file01 -file03 -file04 -file05 -file06
答案1
-name '*.txt'
是匹配名称以.txt
. 结尾的文件。那不会匹配你的。使用与您的文件匹配的模式:
find . -name '-file*' -exec cat {} +
或者
cat ./-file*
如果它们都在当前目录中(还具有按字母顺序排列的这些文件的好处,这与find
随机顺序的列表文件相反)。
请注意,--
上面不需要 ,因为传递给cat
所有参数都以./
, not开头-
。
对于更具体的匹配(仅-file
后跟两位小数):./-file[0-9][0-9]
答案2
xargs
如果您愿意,也可以使用。
find ./ -name '-file0*' | xargs cat
如上所述,您的文件实际上都没有.txt
扩展名。如果他们这样做了你可以替换-file0*
为*.txt