这是我的问题。我想通过终端将特定文件的目录存储在变量中,但我的文件夹中有很多文件,假设其中一个是 test1432.config,另一个是 test1432-busybox.config,其他文件的扩展名不是 .config。所以我决定写
fst_directory="%s" %(co_directory[3:])+ "/*.config"
但如果我这样做,它也会占用 test1432-busybox.config,不是吗?我该怎么做?提前致谢
编辑
两个文件之间的唯一区别是 busybox 部分。我的意思是 fileName-busybox.config 和 fileName.config。我总是想选择 fileName.config
编辑2
因为没有人分享解决方案。我创建了自己的解决方案。在这种情况下,busybox 对我来说不是必需的文件。所以我决定删除它们,然后我可以轻松选择真正的文件。如果文件很重要,而您无法删除它。您可以将其移动到其他地方,然后在操作后移回。
答案1
假设您有两个文件,一个要列出/使用,另一个要忽略,其中要忽略的-
文件名称中包含以下内容:
ls *.config | grep -v '-'
来自有关 grep -v 选项的手册页:
-v, --invert-match
Invert the sense of matching, to select non-matching lines. (-v is specified by
POSIX.)
这基本上意味着列出所有以 结尾的文件.config
,通过管道传递给 grep 并排除包含-
或者可以更好地控制选择的内容:
ls | grep ".*[^-busybox].config"
意思是:
列出目录中的所有文件,将它们发送到 grep,并使用正则表达式过滤它们以包含*
所有内容,但不包括括号中的文件[^-busybox]
,以.config
[^]
排除。