여러 개의 파일 이름이 포함된 파일이 있습니다.
$ 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처럼 basename
및 dirname
명령을 사용할 수 있습니다.
$ 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