Questions tagged «wildcards»

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

5
方括号内的大小写敏感
通常,bash globe区分大小写: $ echo c* casefix.pike cdless chalices.py charconv.py chocolate.pike circum.py clip.pike cpustats.pike crop.pike cwk2txt.py $ echo C* CarePackage.md ChocRippleCake.md Clips 使用方括号似乎并没有改变: $ echo [c]* casefix.pike cdless chalices.py charconv.py chocolate.pike circum.py clip.pike cpustats.pike crop.pike cwk2txt.py $ echo [C]* CarePackage.md ChocRippleCake.md Clips 如果使用连字符,它仍然不会更改: $ echo [c-c]* casefix.pike cdless chalices.py charconv.py chocolate.pike …
10 bash  shell  wildcards  locale 

3
使用Samba安装上的奇怪名称重命名文件
我想将具有奇怪名称的文件重命名为合理的名称,但是我无法:/ $ mv *_000c.jpg 000c.jpg mv: cannot move '?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory 我已经尝试过使用互联网上一些地方推荐的索引节点号: $ ls -il *000c.jpg ls: '?j?Z?R?C1_000c.jpg': No such file or directory 213915 -rw-r--r-- 1 wolf wolf 794655 Jul 21 2012 '?j?Z?R?C1_000c.jpg' $ find . -inum 213915 -print0 | xargs -0 -I '{}' mv …

1
用全局模式定义的变量替换Bash
以下示例说明了该问题。为什么FILENAME在使用替换时回显并被视为图案时打印正确? #!/bin/bash FILEPATH_WITH_GLOB="/home/user/file_*" FILENAME=$(basename "$FILEPATH_WITH_GLOB") echo $FILENAME #file_1234 echo ${FILENAME:1:5} #ile_* <---why is this not ile_1

3
查找以数字结尾的文件
我正在尝试制作一些备份脚本,因为日志文件越来越大。我现在正在处理当前文件(例如中的secure文件/var/log/)并从该文件中删除内容。但是有些文件的名称如:secure.1,secure.2我希望对所有这些文件进行计数,如果数量更大,则2可以全部归档。我找不到找到此文件或计数它们的方法。我想到的第一个想法是: find /var/log/ -name *.1 | wc -l 1因为仅有一个文件,它将始终打印secure.1。我怎样才能像在for循环中那样在其中可以指定一定范围内的数字,例如{1..5}或类似数字。有没有一种方法可以分隔此文件,并使它们成为一个文件,然后对其进行备份或删除,或者执行任何操作……或者首先,我如何才能找到所有以数字结尾的数字。


5
bash中路径名称的模式匹配
我想对目录中的子目录列表进行操作。考虑: for x in x86-headers/*/C/populate.sh; do echo $x; done 这给 x86-headers/elf/C/populate.sh x86-headers/gl/C/populate.sh x86-headers/gmp/C/populate.sh x86-headers/gnome2/C/populate.sh x86-headers/gtk2/C/populate.sh x86-headers/jni/C/populate.sh x86-headers/libc/C/populate.sh 但我想值对应于路径的第二部分 elf,gl等我知道如何去掉领先x86-headers。 for x in x86-headers/*/C/populate.sh; do i=${x##x86-headers/}; echo $i; done 这使 elf/C/populate.sh gl/C/populate.sh gmp/C/populate.sh gnome2/C/populate.sh gtk2/C/populate.sh jni/C/populate.sh libc/C/populate.sh 我也知道如何删除路径中的后续术语。即下降一级: cd x86-headers for x in */C/populate.sh; do i=${x%%/*}; echo $i; done 给 elf …

2
“ grep -r foo *”与“ grep -r foo”。
使用grep -r时,您可以使用*或。搜索所有文件。似乎返回了相同的东西,但是真的一样吗? 假设我搜索“ foo”,那么我可以写 grep -r foo * 要么 grep -r foo . 有人会尝试解释两者之间的区别吗?和*?
10 grep  wildcards 

4
仅在子目录内的特定文件中查找字符串
假设我需要GetTypes()在所有C#源文件(.cs)的目录/子目录中找到该函数。 我曾经用过grep -rn GetTypes *.cs,但是却遇到了一个错误grep: *.cs: No such file or directory。我不得不使用grep -rn GetTypes *,但是在这种情况下,它不仅显示了所有文件*.cs。 我需要使用什么命令才能仅在.cs文件中查找字符串?

6
处理/ etc / passwd文件以列出其home文件夹位于/ home中的所有用户
我有一个示例/ etc / passwd文件,如下所示: tom:x:1000:1000:Work:/home/tom:/bin/bash george:x:1000:1000:Work:/home/george:/bin/bash bla:x:1000:1000:Work:/home/bla:/bin/bash boo:x:1000:1000:Work:/home/boo:/bin/bash bee:x:1000:1000:Work:/root/list:/bin/bash 我正尝试在中列出所有带有主文件夹的用户/home/。 我写 cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}' 其中e.txt是我在此处复制的文本。 我知道反斜杠存在一个问题,即转义字符,但是如何解决它,以便可以在命令的一行中列出它们?

1
删除超过500天的文件
我的目录包含2010年以来的文件。.我想删除所有500天以上的文件,我尝试这样做: find /var/log/arc/* -type f -mtime +500 -delete {}\; 但是我得到这个: -bash: /usr/bin/find: Argument list too long 据我所知,这意味着文件太多,find无法处理它们。但是,即使我提出了+20003年以上的建议,我仍然会做到这一点。 我在这里想念的是什么?

3
Tar列出不完全存在的文件列表
我正在从类似的脚本中运行命令 tar -c -f ar.tar a b c d 其中b,c和d可能不存在,并且可能是目录。我想出的解决方案是将输出ls -d传递到grep,然后将其拼接到tar命令中,或者打开的扩展glob @(a|b|c|d)。 有更整齐的方法吗?我正在使用Debian Wheezy,它似乎没有--include参数。
10 shell  wildcards  tar 

7
如何从/ etc中列出以“ a”或“ c”开头的文件。[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 28天前关闭。 我试过了,ls /etc/[ac]*但是它显示了以a或c开头的目录及其全部内容,而不是以“ a ”或“ c ” 开头的文件。
10 ls  wildcards 

7
按文件名长度查找文件
我想按文件名的长度查找所有文件。 例如,如果我想找到长度为1的文件,如a.go,b.go。 我放: grep '.\{1\}' file 但这是行不通的。我可以使用什么命令按文件名长度查找文件?

3
for循环故障
我正在尝试设置一个脚本,该脚本将遍历一组目录,并在找到.jpg文件时执行一件事,而在找到.nef文件时执行另一件事。问题是,如果目录中没有例如.jpg文件(或.nef),则glob条目不再是扩展的glob,而只是一个字符串。例如: my_dir="pictures/" ext="JPG" for f in "$my_dir"*."$ext"; do echo $f done 如果my_dir文件夹中包含.JPG文件,则将在命令行上正确回显它们。 pictures/one.JPG pictures/two.JPG 但是,如果my_dir没有.JPG文件,则循环将进入一次迭代并回显: pictures/*.JPG 我如何构造它,以便如果该glob没有匹配项,它就不会进入for循环?
10 bash  wildcards 

3
如何让bash自动完成通配符?
如果我有包含文件的目录 foo.bar.a.cat foo.bar.a.hat 然后我输入ls f+ TABbash shell自动完成ls foo.bar.a.。如果输入ls *bar*+,TAB我希望它自动完成*bar*.a.。这可能吗? 这看起来类似于问题 如何在bash中启用通配符的制表符完成? 但是建议的答案“它对我来说是开箱即用的”,却没有。我也尝试过TAB TAB,没有效果。命令``bash --version givesGNU bash,4.2.37(1)-release(x86_64-pc-linux-gnu)`。

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.