파일 이름 목록을 처리하여 디렉터리와 기본 이름을 분할합니다.

파일 이름 목록을 처리하여 디렉터리와 기본 이름을 분할합니다.

여러 개의 파일 이름이 포함된 파일이 있습니다.

$ cat test_as1
/var/incoming/foo.txt
/var/incoming/bar.txt
/var/incoming/baz.txt

각 파일 이름에 대해 디렉터리 이름과 기본 파일 이름을 쉼표로 구분하여 인쇄하고 싶습니다. 예를 들어:

/var/incoming,foo.txt
/var/incoming,bar.txt
/var/incoming,baz.txt

어떻게 해야 하나요?

답변1

매개변수 확장을 사용하여 파일을 반복하고 마지막 슬래시 앞과 뒤의 부분을 인쇄할 수 있습니다.

while IFS= read -r line; do
    printf '%s,%s\n' "${line%/*}" "${line##*/}"
done < test_as1

"${line%/*}"/*줄 끝에서 가장 짧은 항목을 제거하고 "${line##*/}"줄 시작 부분에서 가장 긴 항목을 제거합니다.*/

답변2

위의 설명에서 언급한 @hhoke1처럼 basenamedirname명령을 사용할 수 있습니다.

$ basename /var/incoming/new_items.txt
new_items.txt

$ dirname /var/incoming/new_items.txt
/var/incoming

답변3

이게 네가 말하는거야?

sed -e 's/\(.*\)\//\1,/' -i /var/incoming/new_item.txt

관련 정보