파일 이름 없이 디렉토리 경로 인쇄

파일 이름 없이 디렉토리 경로 인쇄

저는 Linux를 처음 사용하는데 도움이 필요합니다. 파일 이름과 해당 경로 목록이 포함된 파일이 있습니다. 전임자:

$ cat /home/user/files.txt

/xyz/abc/xxx/abc.sh
/xyz/nnn/111.dat
/xyz/mmm/yyy/sss/rrr/123.log

파일 이름이 아닌 디렉토리 구조만 인쇄하는 방법은 디렉토리 깊이나 확장자가 일정하지 않다는 점에 유의하세요.

/필요한 출력(뒤에 슬래시가 필요 없음)

/xyz/abc/xxx/
/xyz/nnn/
/xyz/mmm/yyy/sss/rrr/

제안해 주세요. 미리 감사드립니다.

답변1

cat file | while read name; do
   dirname "$name"
done

답변2

마지막 구성 요소가 실제로 파일 이름이라고 확신하는 경우 다음을 사용할 수 있습니다 awk.

awk -F'/' -v OFS='/' '{$NF=""}1' file.txt

입력 및 출력에 as 필드 구분 기호를 사용 /하고 마지막 필드(예: 파일 이름)를 빈 문자열로 설정합니다. 1규칙 블록의 외부 지시문은 awk모든 수정 사항을 포함하여 행을 인쇄합니다.

또는 다음을 사용하십시오 sed.

sed -E 's|/[^/]+$|/|' file.txt

/"a 다음에 임의의 문자가 오는 패턴을 대체합니다.아니요줄 끝까지 슬래시를 사용하여" /경로의 마지막 부분인 파일 이름을 효과적으로 제거합니다.

관련 정보