重点关注@()这个问题中提到的语法:
[[ $OSTYPE == *@(darwin|freebsd|solaris|cygwin|openbsd)* ]]
这种语法来自哪里?为什么在这种情况下使用它?和有什么区别:
[[ $OSTYPE =~ (darwin|freebsd|solaris|cygwin|openbsd) ]]
要么
[[ $OSTYPE == *(darwin|freebsd|solaris|cygwin|openbsd) ]]
这似乎都是等价的.
是否使用此语法代替=~运算符以便使用正则表达式实现更好的可移植性?
谢谢你的澄清
我在一个文件夹中有一堆文件:
foo_1
foo_2
foo_3
bar_1
bar_2
buzz_1
...
Run Code Online (Sandbox Code Playgroud)
我想找到所有不以给定前缀开头的文件,并将列表保存到文本文件中.下面是该文件的一个例子做有一个给定的前缀:
find bar_* > Positives.txt
Run Code Online (Sandbox Code Playgroud) 在我的shell bash中,我必须选择以ab或开头的文件xyz,而不是以.jpg或结尾.gif
这是我做的,但它不起作用:
$ echo ab*[!.jpg] ab*[!.gif] xyz*[!.jpg] xyz*[!.gif]
我尝试过滤一些我不想复制到另一个文件夹的文件(a123*.zip在这种情况下)并想要复制所有其他*.zip文件
if [[ ! -f ./a123*.zip ]];
then
# copy all files without a123*.zip
fi
Run Code Online (Sandbox Code Playgroud)
如何触发复制?
我有一个文件的数据路径,其中有几个数据文件,例如 data01.txt、data02.txt 等。在处理过程中,用户将为数据提供掩码文件(也可能通过外部工具)。掩码文件将包含字符串“mask”,例如data01-mask.txt。
from pathlib import Path
p = Path(C:\Windowns\test\data01.txt)
dircontent = list(p.parent.glob('*'))
Run Code Online (Sandbox Code Playgroud)
为我提供所有文件路径作为对象的列表,Path包括潜在的掩码。现在我想要一个列表,它为我提供目录内容,但不包括任何包含掩码的文件。我尝试过这种方法来使用奇特的正则表达式*![mask]*,但我没有让它工作。
使用,
dircontentstr = [str(elem) for elem in x]
filtereddir = [elem.find('mask') for elem in dircontentstr if elem.find('mask')==-1]
Run Code Online (Sandbox Code Playgroud)
我可以获得所需的结果,但然后转换回Path元素似乎很愚蠢。有没有直接的方法从目录列表中排除?
lib1.a
lib2.a
lib1.so
lib2.so
libgcc1.so
libgcc2.so
libgcc3.so
lib3.so
如何复制所有*.so文件,不包括libgcc*.so复制以下文件:
lib1.so
lib2.so
lib3.so
?
我想列出特定文件扩展.vcf使用bash.我遇到的问题是.vcf目录中可能有多个,但只需要一个,但_它只是格式xxx.vcf(name.vcf).我不知道该怎么做,但下面似乎很接近.谢谢 :).
目录文件
123.vcf
123_count.txt
123_variant_list.vcf
Run Code Online (Sandbox Code Playgroud)
庆典
select file in $(cd /home/file/overall/stats;ls *.{vcf});do break;done
echo $file
Run Code Online (Sandbox Code Playgroud)
期望的输出
123.vcf
Run Code Online (Sandbox Code Playgroud)