私のファイルには、複数のファイルへの相対パスが含まれています。 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

お役に立てば幸いです。

関連情報