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