grep + 查找所有为 jar 文件且以 jar 结尾的文件

grep + 查找所有为 jar 文件且以 jar 结尾的文件

通过这种方式我们可以获得所有.jar文件列表:

#  su -l hdfs -c " hdfs dfs -ls /home/test/jt/*.jar "
-rw-r--r--   3 hdfs hdfs     501879 2019-03-04 10:35 /home/test/jt/cfjrfr-3.8.1.jar
-rw-r--r--   3 hdfs hdfs     870215 2019-03-04 10:35 /home/test/jt/dhe-1.2.1.jar
-rw-r--r--   3 hdfs hdfs    2734339 2019-03-04 10:35 /home/test/jt/34343-25.1-jre.jar
-rw-r--r--   3 hdfs hdfs      30053 2019-03-04 10:35 /home/test/jt/23424.jar
-rw-r--r--   3 hdfs hdfs      16481 2019-03-04 10:35 /home/test/jt/h324.jar
-rw-r--r--   3 hdfs hdfs      29725 2019-03-04 10:35 /home/test/jt/3223kj3.jar

我们还尝试使用 grep 的不同方法,但此语法不返回任何输出:

 su -l hdfs -c " hdfs dfs -ls /home/test/jt" |  grep  "*.jar$"

我哪里错了?

答案1

*这里是多余的。在正则表达式中,*用于指定前一个符号可以出现任意次数,包括 0 次。在没有前面符号的情况下使用它是没有意义的,因此在这种特殊情况下grep会查找*符号本身(一般情况下您需要在它前面用于\此目的)。

.也有匹配任何符号的特殊含义,因此如果您想涵盖存在一些虚假扩展名(例如.djar, 或以 结尾的无扩展名文件的情况jar),您也需要在其前面添加\

所以,简而言之,您只需要:

su -l hdfs -c " hdfs dfs -ls /home/test/jt" |  grep  "\.jar$"

答案2

使用 grep -E

su -l hdfs -c " hdfs dfs -ls /home/test/jt" |  grep  -E .jar$

它在第一个命令的输出中搜索以 .jar 结尾的所有文件

答案3

试试这个:

ls -l | grep *.jar*

相关内容