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*

관련 정보