터미널 폴더 내의 폴더 경로

터미널 폴더 내의 폴더 경로

저장한 파일이 너무 많아요

Year -> Month -> Day -> bunch of .nc files

nc 파일이 포함된 모든 디렉터리 목록을 생성하고 싶습니다. 각 nc 파일의 경로를 나열할 수 있습니다.

find /Year/ -name *.nc | sort > directory_list.txt

이 기본 파일 내 해당 폴더의 하위 디렉터리에서 각 .nc 파일을 찾습니다. 이 결과는 "directory_lists" 텍스트 파일에 저장됩니다.

/2000/01/01/nc_file1.nc
/2000/01/01/nc_file2.nc
/2000/01/01/nc_file3.nc
/2000/01/02/nc_file3.nc
/2000/01/03/nc_file3.nc

잠깐... 각 "요일"에 대한 디렉토리 목록을 갖도록 이것을 어떻게 수정합니까? 이는 위의 명령을 사용하여 얻은 것과 유사하지만 nc 파일에 대한 정보를 포함하지 않습니다.

나는 시도했다:

find /Year/ | sort > directory_list.txt

하지만 이것은 모든 경로를 반환합니다.

/Year/
/Year/Month
/Year/Month/Day

나는 결과가 다음과 같기를 원합니다:

/2000/01/01/
/2000/01/02/
/2000/01/03/

잠깐...디렉토리 이름을 반복하지 마세요.

나는 이것이 Year 디렉토리에서 세 번째 수준 폴더의 디렉토리를 얻으려는 것과 같다고 생각합니까? 어떤 조언이라도 대단히 감사하겠습니다.

답변1

find /Year/ -name '*.nc' | sed -e 's:/[^/]*$:/:' | sort -u

이름이 "*.nc"와 일치하는 파일이 하나 이상 포함된 디렉터리 목록을 제공합니다.

답변2

egrep '/[^/]+/[^/]+/' directory_list.txt

그러면 정확히 3 을 포함하는 모든 행이 제공되며 /이는 정확히 원하는 디렉토리 깊이입니다.

관련 정보