相关疑难解决方法(0)

什么是bash中的@(... | ... | ...)语法?

重点关注@()这个问题中提到的语法:

[[ $OSTYPE == *@(darwin|freebsd|solaris|cygwin|openbsd)* ]]

这种语法来自哪里?为什么在这种情况下使用它?和有什么区别:

[[ $OSTYPE =~ (darwin|freebsd|solaris|cygwin|openbsd) ]]

要么

[[ $OSTYPE == *(darwin|freebsd|solaris|cygwin|openbsd) ]]

这似乎都是等价的.

是否使用此语法代替=~运算符以便使用正则表达式实现更好的可移植性?

谢谢你的澄清

regex bash shell scripting

6
推荐指数
2
解决办法
1154
查看次数

如何在bash中找到所有不以给定前缀开头的文件?

我在一个文件夹中有一堆文件:

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)

unix bash shell grep find

5
推荐指数
3
解决办法
7977
查看次数

Bash表达式列出以模式开头和结尾的文件

在我的shell bash中,我必须选择以ab或开头的文件xyz,而不是以.jpg或结尾.gif

这是我做的,但它不起作用:

$ echo ab*[!.jpg] ab*[!.gif] xyz*[!.jpg] xyz*[!.gif]

bash shell

4
推荐指数
1
解决办法
109
查看次数

移动不匹配的文件(如果那样)

我尝试过滤一些我不想复制到另一个文件夹的文件(a123*.zip在这种情况下)并想要复制所有其他*.zip文件

if [[ ! -f ./a123*.zip ]];  
then 
    # copy all files without a123*.zip 
fi
Run Code Online (Sandbox Code Playgroud)

如何触发复制?

bash

3
推荐指数
1
解决办法
163
查看次数

如何以正确的方式使用python中的pathlib排除路径目录中的文件?

我有一个文件的数据路径,其中有几个数据文件,例如 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元素似乎很愚蠢。有没有直接的方法从目录列表中排除?

python pathlib

3
推荐指数
1
解决办法
1万
查看次数

复制除libgcc*.so之外的所有*.so文件

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

linux copy

2
推荐指数
1
解决办法
1320
查看次数

bash列出某种类型的文件但仅在条件满足时才列出

我想列出特定文件扩展.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)

bash

1
推荐指数
1
解决办法
50
查看次数

标签 统计

bash ×5

shell ×3

copy ×1

find ×1

grep ×1

linux ×1

pathlib ×1

python ×1

regex ×1

scripting ×1

unix ×1