Bash 如何仅grep指定的文件夹名称
我有这样的结构Bash 如何仅grep指定的文件夹名称,bash,grep,directory,ls,Bash,Grep,Directory,Ls,我有这样的结构 201 202 203 204 205 206 2011-08-04_03-01-15 2011-08-05_03-01-15 2011-08-08_03-01-15 2011-08-09_03-00-02 2011-08-10_14-16-37 我需要只包含日期名称的grep文件夹,如“2011-08-05_03-01-15” 我尝试了ls | grep'201',但在输出中显示201文件夹 使用ls | grep'2011'的方式是不可接受的,因为这是一个硬代码。您可以在没
201
202
203
204
205
206
2011-08-04_03-01-15
2011-08-05_03-01-15
2011-08-08_03-01-15
2011-08-09_03-00-02
2011-08-10_14-16-37
我需要只包含日期名称的grep文件夹,如“2011-08-05_03-01-15”
我尝试了ls | grep'201',但在输出中显示201文件夹
使用ls | grep'2011'的方式是不可接受的,因为这是一个硬代码。您可以在没有grep的情况下这样做:
ls -d ????-??-??_??-??-??
假设您没有其他文件夹名称遵循相同的模式,而没有日期,例如aaaa-bb-cc\u dd-ee-ff
,则此选项可以正常工作,因为上面的命令也会列出这些文件夹名称
您甚至可以减少限制,在第5位列出所有带有-
的内容:
ls -d ????-*
你可以在没有grep的情况下做到这一点:
ls -d ????-??-??_??-??-??
假设您没有其他文件夹名称遵循相同的模式,而没有日期,例如aaaa-bb-cc\u dd-ee-ff
,则此选项可以正常工作,因为上面的命令也会列出这些文件夹名称
您甚至可以减少限制,在第5位列出所有带有-
的内容:
ls -d ????-*
使用
grep
:
ls -d */ | grep -E '[0-9]{4}(-[0-9]{2}){2}_([0-9]{2}-){2}[0-9]{2}'
使用
查找:
find * -regextype posix-extended \
-regex '[0-9]{4}(-[0-9]{2}){2}_([0-9]{2}-){2}[0-9]{2}' \
-type d
使用grep
:
ls -d */ | grep -E '[0-9]{4}(-[0-9]{2}){2}_([0-9]{2}-){2}[0-9]{2}'
使用查找:
find * -regextype posix-extended \
-regex '[0-9]{4}(-[0-9]{2}){2}_([0-9]{2}-){2}[0-9]{2}' \
-type d
尝试使用regExp:
ls | grep-E“…----*--”尝试使用regExp:
ls | grep-E“…----*--”手册页中包含了所有信息。
查看手册页中的所有信息。
看一看更适合于“不真实”,这是一个合适的编程问题,人们确实使用bash编写脚本更适合于“不真实”,这是一个合适的编程问题,人们确实使用bash编写脚本,但要注意这一点。扩展???往往由shell(例如bash)而不是接收程序来完成。结果是,如果与此模式匹配的目录太多,则旧的shell会给出一个错误,即参数列表太长。不过,请小心使用此参数。扩展???往往由shell(例如bash)而不是接收程序来完成。结果是,如果与此模式匹配的目录太多,则旧的shell会给出一个错误,即参数列表太长。请不要忘记在查找时键入-d。@jhclark:是的。至少,我做了ls
+1.别忘了在查找时键入-d。@JHKlark:是的。至少,我做了ls
+1.