Questions tagged «wildcards»

通配符表示通过包含通配符的名称模式匹配文件。

3
删除除一种(或多种)文件类型外的所有文件类型
我一直在试图找到一个命令来删除文件夹中的所有文件,但不是一种文件类型。但是我似乎没有任何运气。到目前为止我尝试过的是: set extended_glob rm !(*.dmg) # this returns zsh:number expected rm ./^*.dmg # this returns no matches found 我正在使用的zsh版本是zsh 5.0.2 (x86_64-apple-darwin13.0.1)。
20 zsh  wildcards 

1
echo [9876543210]显示1 4 5 6…为什么?
请解释为什么最后四个echo语句显示1 4 5 6?我曾经无意中碰到了这个,但是现在我好奇为什么会发生这种行为。 这些语句按预期工作(对我而言)。 $ echo [ 9876543210 ] [ 9876543210 ] $ echo [237890] [237890] 这些echo语句始终显示1 4 5 6.这些数字是否有特殊之处? $ echo [9876543210] 1 4 5 6 $ echo [abcd9876543210ghi] 1 4 5 6 $ echo [-123456-] 1 4 5 6 $ echo [-7654321-] 1 4 5 6 谢谢! …


2
zsh:从模式中排除文件
说我有以下文件: |-- bar `-- foo |-- type_A_1 |-- type_A_2 |-- type_B_1 |-- type_B_2 |-- type_B_xx |-- type_B_xx `-- something_else 我以为以下命令 print -l foo/*~{type_B*} 将打印一切下foo ,除了东西下手type_B,但它并没有,而是在富打印的一切: foo/type_A_1 foo/type_A_2 foo/type_B_1 foo/type_B_2 foo/type_B_xx foo/something_else 我也尝试过print -l foo/*~type_B并得到了同样的东西。 异常通配符~在zsh中如何工作?

3
bash globstar匹配
我有这个目录结构: ~/tmp/globstar ɀ find dir -type f dir/file.ext dir/subdir1/file.ext dir/subdir2/file.ext 并且,globstar在Bash中启用该选项后,我可以说: ~/tmp/globstar ɀ ls -1 dir/**/*.ext dir/subdir1/file.ext dir/subdir2/file.ext 我的问题是:为什么dir/file.ext从此列表中排除? Bash手册这样说globstar: 如果设置,则在文件名扩展上下文中使用的模式“ **”将匹配所有文件以及零个或多个目录和子目录。如果模式后跟一个'/',则仅目录和子目录匹配。 在本段中,“ 零 ”给我留下dir/file.ext应有的印象;除非我希望错过一些东西。
18 bash  wildcards 

2
SCP通配符在zsh中不起作用
我已经切换到zsh,并且工作正常。一件奇怪的事,当我尝试使用*通配符进行scp时,它不起作用,我必须投入大量精力。下面的第二个命令运行正常。 关于为什么会这样以及如何解决的任何想法? ~/dmp ⌚ 16:06:10 $ scp abc@123:/home/se/exports/201405091107/* . zsh: no matches found: root@uf3:/home/se/exports/201405091107/* ~/dmp ⌚ 16:06:53 $ bash sean@seanlaptop:~/dmp$ scp abc@123:/home/se/exports/201405091107/* .
17 zsh  wildcards 

2
bash中的..] [foo []`是做什么的?为什么匹配`..`?
请看以下内容: $ echo .[].aliases[] .. $ echo .[].foo[] .. $ echo .[].[] .. $ echo .[].xyz[] .. $ echo .xyz[].xyz[] .xyz[].xyz[] $ echo .xyz[].[] .xyz[].[] 显然,这似乎有些混乱,但我不明白结果如何结合在一起。据我了解[]是一个空字符类。如果直观的话 它只匹配空字符串;在这种情况下,我希望bash能够完全复制,因为在此目录中没有与之匹配的东西,而且还与..aliases(在第一个示例中)匹配, 或一无所有;在这种情况下,我希望bash也会完全复制字符串。 这与GNU bash 4.4.23(1)版一起发布。
16 bash  shell  wildcards 

2
未经适当许可无法扩展星号
有人可以向我解释以下内容吗? $ ls -ld /temp/sit/build/ dr-xr-s--- 3 asdf qwer 4096 Jan 31 2012 /temp/sit/build/ $ ls -ld /temp/sit/build/* ls: /temp/sit/build/*: Permission denied 因此,我不能在这里使用星号。我用sudo命令尝试过,但收到“没有这样的文件”错误,而不是“权限被拒绝” ... sudo ls -l /temp/sit/build/* ls: /temp/sit/build/batch*: No such file or directory 但是如果我不使用*,它最终会起作用 sudo ls -l /temp/sit/build/ total 4 dr-xr-s--- 11 asdf qwer 4096 Oct 3 23:31 …

4
避免由于星号未扩展而导致的错误
在bash中,我经常使用如下的for循环 for file in *.type; do sommecommand "$file"; done; 对所有匹配的文件执行操作*.type。如果在工作目录中找不到以此结尾的文件,星号不会展开,通常我会收到一条错误消息,提示somecommand找不到该文件。我可以立即想到几种避免此错误的方法。但是添加一个条件似乎并不十分优雅。有没有一个简短的方法来实现这一目标?
16 bash  wildcards  for 

2
bash中的双引号如何匹配(配对)?
我正在使用GNU bash 4.3.48。考虑以下两个仅相差一个美元符号的命令。 指令1: echo "(echo " * ")" 指令2: echo "$(echo " * ")" 它们的输出分别是 (echo test.txt ppcg.sh ) 和 * 因此很明显,在第一种情况下,*会出现问题,这意味着第一个引号与第二个引号形成一个对,而第三个和第四个引号形成另一个对。 在第二种情况下,*不会被混淆,并且输出中恰好有两个额外的空格,一个在星号之前,另一个在空格之后,这意味着第二个引号与第三个引号一起使用,第一个引号与第四个引号一起使用。 除了$()引号不与下一个引号匹配,而是嵌套的引号之外,还有其他情况吗?此行为是否已得到充分记录?如果是,我在哪里可以找到相应的文件?


2
我只能在使用globbing时使rm交互吗?(使用bash或zsh或同时使用)
每当我rm用外壳球一次添加多个项目时,即使模式扩展到超出我预期的可能性甚至是很小的可能性,我也总是会记得添加-i,但是(当然)我会忘记并且不小心吹走了一些有用的东西。有些人尝试使用别名来解决此问题,例如,alias rm='rm -i'但我讨厌让rm 始终保持交互式的想法,因为那样我就会养成一直使用的习惯-f,这显然会破坏整个目标。 我想做的是rm仅-i在使用globbing时使用,并且-f当然要覆盖它-i,因此我仍然可以像平常一样删除整个目录rm -rf junk。 因此rm *blah*,确实会,rm -i *blah*但是rm blah会完全按照键入的方式工作。 如果在不同的shell中完成此操作的方式有所不同,我将选择一个答案,该答案为bash 和 zsh 提供方法,而不是仅涵盖一个或另一个的答案。 注意:我实际上并不认为这一定是个好主意;我只是问是否有可能。如果您认为这是一个愚蠢的主意,我很高兴听到您的意见背后的原因,但请不要在答案栏中发布此类评论。真正的答案要么告诉我如何执行此操作,要么解释为什么/不可能(或者可能提供一种替代方法来获得类似结果)。但是,如果您想告诉我为什么这很愚蠢,请发表评论。即使我不同意结论,我也会发表理性的评论。
15 bash  zsh  wildcards  rm 

2
GLOBIGNORE如何运作?
根据bash的手册页: GLOBIGNORE A colon-separated list of patterns defining the set of filenames to be ignored by pathname expansion. If a filename matched by a pathname expansion pattern also matches one of the patterns in GLOBIGNORE, it is removed from the list of matches. 但是在实践中... $ bash --noprofile --norc bash-4.2$ touch …

3
用`ls`和正则表达式列出
如何列出文件名以最后一个字符和.txt扩展名结尾的文件? 我已经尝试过了,ls *+([[:digit:]]).txt但这对于abc12.txt和是正确的abc2.txt。 但是我只需要得到abc2.txt。我怎样才能做到这一点? 有没有某种形式的:digit:可以做到这一点?
15 bash  wildcards 

3
如何从bash的文件名扩展机制中排除某些文件?
我在根目录中有ubuntu文件系统目录,而我不小心将数百个文件复制到了根目录中。 我直觉地试图通过排除文件系统来删除复制的文件,例如 rm -rf !{bin,sbin,usr,opt,lib,var,etc,srv,libx32,lib64,run,boot,proc,sys,dev} ./. 但它不起作用。在删除整个目录时排除某些目录的正确方法是什么? 编辑:切勿在不知所措的情况下尝试此处的任何命令!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.