仅当目录中的 .xlsx 文件具有相同文件名时才删除 .pdf 文件吗?

仅当目录中的 .xlsx 文件具有相同文件名时才删除 .pdf 文件吗?

我有数百个文件夹pdfxls(x)从合法电子取证系统批量导出的文件。这些导出中的文件名对应于 bates #,例如ABCD_00000001.pdf, ABCD_00000002.pdf, ... , ABCD_00002000.pdf.这些批量导出包括一个空白pdf文件每一个 xls(x)file - 两者具有完全相同的文件名。例如,ABCD_00000005.xlsx是在 ediscovery 系统中生成的 xlsx 文件,ABCD_00000005.pdf是在批量导出中创建的无关的空白 pdf 文件。

这些无关的 .pdf 文件可能是由于运行这些批量导出的人员的用户错误造成的,但我通常无法控制该过程的这一方面。所以我想知道是否有任何相对简单的方法来删除这些无关的 .pdf,而不强迫某人手动检查它们。

答案1

循环 pdf 文件,使用参数扩展来提取基本名称:

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

更新:我的逻辑倒退了,现在应该修复了。

答案2

循环 .xls(x) 文件并删除匹配的 pdf 文件。

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

如果没有匹配的 pdf 也不会造成任何损害。

相关内容