이 방법으로 모든 .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*