복붙노트

[HADOOP] HDFS에서 파일 이름 만 나열하는 방법

HADOOP

HDFS에서 파일 이름 만 나열하는 방법

hadoop에 파일 이름 만 가져 오는 명령 / 표현식이 있는지 알고 싶습니다. 나는 파일의 이름 만 가져올 필요가있다. 내가 hadoop fs -ls를 실행하면 전체 경로를 출력한다.

나는 아래에서 그것을 시도했다. 그러나 그것을하는 더 좋은 약간의 방법이라면 단지 궁금하게 생각한다.

hadoop fs -ls <HDFS_DIR>|cut -d ' ' -f17 

해결법

  1. ==============================

    1.hadoop ls는 파일 이름이나 심지어 마지막 열만 출력하는 옵션을 지원하지 않는 것 같습니다.

    hadoop ls는 파일 이름이나 심지어 마지막 열만 출력하는 옵션을 지원하지 않는 것 같습니다.

    마지막 열을 안정적으로 얻으려면 먼저 공백을 단일 공백으로 변환해야 마지막 열을 지정할 수 있습니다.

    hadoop fs -ls | sed '1d;s/  */ /g' | cut -d\  -f8
    

    이렇게하면 마지막 열이 표시되지만 전체 경로가 포함 된 파일이됩니다. 파일 이름 만 원하면 @rojomoke가 제시하는 basename을 사용할 수 있습니다 :

    hadoop fs -ls | sed '1d;s/  */ /g' | cut -d\  -f8 | xargs -n 1 basename
    

    또한 Found? x items라고 쓰여있는 첫 번째 줄을 필터링했습니다.

    주의 : 주석에서 @ felix-frank 노트처럼, 위의 명령은 파일 이름을 여러 개의 연속 공백으로 올바르게 보존하지 않습니다. 따라서 Felix가 제안한보다 정확한 해결책 :

    hadoop fs -ls / tmp | sed 1d | perl -wlne'print + (split "", $ _, 8) [7] '

  2. ==============================

    2.다음 명령은 파일 이름 만 반환합니다.

    다음 명령은 파일 이름 만 반환합니다.

    hdfs dfs -stat "%n" my/path/*
    
  3. ==============================

    3.나는 이것이 누군가를 돕기를 희망한다 - 버전 2.8.x + (3에서 또한 유효하다)로 -

    나는 이것이 누군가를 돕기를 희망한다 - 버전 2.8.x + (3에서 또한 유효하다)로 -

    hadoop fs -ls  -C  /paths/
    
  4. ==============================

    4.

     hadoop fs -ls  -C  /path/* | xargs -n 1 basename
    
  5. ==============================

    5.문자열에서 '/'로 끝나는 모든 접두어를 제거하는 basename 명령을 사용하십시오.

    문자열에서 '/'로 끝나는 모든 접두어를 제거하는 basename 명령을 사용하십시오.

    basename $(hadoop fs -ls)
    
  6. ==============================

    6.아래 명령은 디렉토리의 파일 이름 만 반환합니다. Awk '/'로 목록을 분할하고 파일 이름이 될 마지막 필드를 인쇄합니다.

    아래 명령은 디렉토리의 파일 이름 만 반환합니다. Awk '/'로 목록을 분할하고 파일 이름이 될 마지막 필드를 인쇄합니다.

    hdfs dfs -ls / | awk -F '/' '{print $ NF}'

  7. from https://stackoverflow.com/questions/21569172/how-to-list-only-the-file-names-in-hdfs by cc-by-sa and MIT license