问题描述
我需要在 R 函数 pattern
和 base::ls
的 base::list.files
参数中使用大括号展开。例如:
# in terminal
ls
# string1 stringX stringYZ
ls string{1,X}
# string1 stringX
但是
# in R
list.files()
# "string1" "stringX" "stringYZ"
list.files(pattern="string{1,X}")
# error: invalid 'pattern' regular expression
list.files(pattern="string\\{1,X\\}")
# character(0) # i.e. finds nothing
list.files(pattern=glob2rx("string{1,X}"))
# character(0) # i.e. finds nothing
base::ls
也是如此。
非常感谢您的帮助,
克里斯
解决方法
list.files(pattern="^string(1|X)$")
有效(list.files(pattern="string(1|X)")
也是如此)。
谢谢!
sh 中类似
filename=log_file-$(date +%Y.%m.%d)
touch $filename
{ who; df -h; ps -aux; } > $log_dir/$filename
的结果,您可以使用:
ls string{1,X}
或者,正如@wiktor-stribiżew 在评论中指出的那样,您可以使用:
list.files(pattern="^string(1|X)$")
要进行完整的字符串匹配,您必须用 list.files(pattern="^string[1X]$")
和 ^
将模式括起来。感谢 @wiktor-stribiżew 的评论。