使用grep格式化ls -lRA命令的输出

时间:2017-09-22 10:20:56

标签: bash shell grep

我尝试使用grep

基于关键字打印输出中的特定行
ls -RlA | grep foo | sed -n '1 p'
ls -RlA | grep bar | sed -n '1 p'
ls -RlA | grep foo_file
ls -RlA | grep bar_file

有没有办法将这些语句简化为一个命令?

P.S:订单无关紧要

2 个答案:

答案 0 :(得分:2)

查找具有给定名称的所有文件或目录:

find . '(' -name foo -o -name bar -o -name foo_file -o -name bar_file ')' -ls

使用正则表达式的更紧凑版本:

find . -regex '.*/\(foo\|bar\|foo_file\|bar_file)' -ls

与上述相同,但检查foo_filebar_file是文件,而不是目录:

find . '(' -name foo -o -name bar -o -name foo_file -type f -o -name bar_file -type f ')' -ls

答案 1 :(得分:1)

这里有一个命令。

ls -la **/{foo,bar,foo_file,bar_file}

您也可以在*内使用{},例如{*.txt,foo_*.zip}

请注意,如果找不到{}内的某个字段,它将无效。