我尝试使用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:订单无关紧要
答案 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_file
和bar_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}
。
请注意,如果找不到{}
内的某个字段,它将无效。