したがって、特定の基準に合ったファイルの相対パスをテキストファイルに書き込むには、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
お役に立てば幸いです。