web-dev-qa-db-ja.com

ディレクトリ内の.xlsxファイルのファイル名が同じ場合にのみ.pdfファイルを削除しますか?

法的な電子情報開示システムから大量にエクスポートされた何百ものpdfファイルとxls(x)ファイルを含むフォルダーがあります。これらのエクスポートのファイル名は、_ABCD_00000001.pdf_、_ABCD_00000002.pdf_、...、_ABCD_00002000.pdf_などのベイト#に対応しています。これらの一括エクスポートには、すべてのシングルxls(x)ファイルの空白のpdfファイルが含まれ、両方ともまったく同じファイル名を持っています。たとえば、_ABCD_00000005.xlsx_は電子情報開示システムで作成されたxlsxファイルであり、_ABCD_00000005.pdf_は大量エクスポートで作成された無関係な空白のPDFファイルです。

これらの無関係な.pdfファイルは、これらの大量エクスポートを実行しているユーザーのエラーが原因である可能性がありますが、通常、プロセスのその側を制御することはできません。したがって、誰かに手動で実行させることなく、これらの無関係な.pdfを削除する比較的簡単な方法があるかどうかを知りたいと思いました。

3
ck_chicago

PDFファイルをループし、パラメーター展開を使用してベース名を抽出します。

#!/bin/bash
for pdf in *.pdf ; do
    basename=${pdf%.pdf}
    if [[ -f $basename.xls || -f $basename.xlsx ]] ; then
        rm "$pdf"
    fi
done

更新:ロジックが逆になりました。修正する必要があります。

6
choroba

.xls(x)ファイルをループし、一致するpdfファイルを削除します。

for xls in *.xls* ; do
    /bin/rm -f "${xls%.xls*}"".pdf"
done

一致するPDFがない場合でも、何も害はありません。

4
Xalorous