Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何仅grep指定的文件夹名称_Bash_Grep_Directory_Ls - Fatal编程技术网

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.