내 파일에는 여러 파일에 대한 상대 경로가 포함되어 있습니다. PDF 파일 이름만 다른 파일로 인쇄하려면 어떻게 해야 합니까?

내 파일에는 여러 파일에 대한 상대 경로가 포함되어 있습니다. PDF 파일 이름만 다른 파일로 인쇄하려면 어떻게 해야 합니까?

따라서 특정 기준에 맞는 파일의 상대 경로를 텍스트 파일에 작성하기 위해 find 명령을 사용합니다. 이제 이 파일을 처리하여 경로가 아닌 파일 이름만 인쇄하고 싶습니다. 따라서 파일의 각 줄을 구문 분석해야 하며, PDF 파일 이름이 포함된 경우 해당 이름을 화면에 인쇄해야 합니다. 어떻게 해야 하나요? 이는 기본적으로 일괄 처리의 한 형태이며 이러한 방식으로 파일을 처리하는 데 적합한 솔루션을 찾지 못했습니다.

답변1

여기서는 상대 경로 이름 목록을 설정했는데, 그 중 일부는 pdf를 포함하고 일부는 그렇지 않습니다.

$ cat list.txt
../myfiles/some.pdf
../myfiles/another.pdf
../../old.pdf
../../notapdf.txt
../nowhere/pdf with a space.pdf

그 다음에는 스크립트가 있습니다.

while read -r line; do echo $(basename "$line")

done <<< $(grep -i "\.pdf$" list.txt)

그러면 .pdf, .PDF 또는 심지어 .PdF 파일을 가져오기 위해 파일 목록에서 대소문자를 구분하지 않는 grep을 수행합니다(그렇게 이름이 지정되었다고 가정). basename 명령은 선행 경로를 제거하고 파일 이름 부분을 남겨두고 인쇄합니다. 파일 이름의 공백도 처리합니다.

출력은 다음과 같습니다:

some.pdf
another.pdf
old.pdf
pdf with a space.pdf

도움이 되길 바랍니다.

관련 정보