首页 > 解决方案 > 如何搜索包含空格的文件名,以便消除空格

问题描述

对于以下内容,N 代表数字,S&F 代表姓氏和名字中的字母:

我已经创建了一个包含大约 6,500 个 pdf 图像的文件结构,文件名的格式通常为 NNN.SSSSS.FFFFF.pdf 格式,我需要对其进行标准化,但是我创建的一些文件名在第一个点之后插入了一个空白,就像在这个例子中一样神经网络。SSSS。FFFFF.pdf。某些姓氏前面的空格会影响姓氏排序顺序

我想在我的 Google 云端硬盘中搜索在数字后的点后包含空格的文件名。完成搜索后,我可以通过重命名手动删除空白,或者如果太多,我可以创建一个谷歌脚本。最终,我认为我需要一个数字通配符。假设 %20 代表空白,我在搜索字段中尝试了以下内容,但没有找到 NNN。SSSSS 文件。

%20 .%20 ".%20" <> .%20 here <>我以为不是字母???

帮助请问候Des

标签: google-apps-scriptgoogle-sheetswildcard

解决方案


我相信你的目标如下。

  • 您想将PDF 文件的文件名从NNN. SSSSS. FFFFF.pdf更改为 。NNN.SSSSS.FFFFF.pdf
  • 您想使用 Google Apps 脚本实现此目的。

流动:

不幸的是,在当前阶段,正则表达式不能用于搜索查询。这样,NNN. SSSSS. FFFFF.pdf不能直接检索具有类似模式文件名的文件。所以我想提出以下流程。

  1. 检索文件夹中的 PDF 文件。
  2. 使用正则表达式检查文件名。
    • 在这种情况下,我使用[a-zA-Z0-9]{3}\. [a-zA-Z0-9]{5}\. [a-zA-Z0-9]{5}\.pdf正则表达式。
  3. 将文件名从 更改NNN. SSSSS. FFFFF.pdfNNN.SSSSS.FFFFF.pdf.

样本

function myFunction() {
  const folderId = "###"; // Please set the folder ID.

  // 1. Retrieve PDF files in the folder.
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFilesByType(MimeType.PDF);
  while (files.hasNext()) {
    const file = files.next();
    const filename = file.getName();
    
    // 2. Check the filename using regex.
    if (/[a-zA-Z0-9]{3}\. [a-zA-Z0-9]{5}\. [a-zA-Z0-9]{5}\.pdf/.test(filename)) {

      // 3. Change the filename
      file.setName(filename.replace(/ /g, ""));
    }
  }
}
  • 如果您想检索 Drive 中的所有 PDF 文件,请使用以下脚本。

      const files = DriveApp.getFilesByType(MimeType.PDF);
      while (files.hasNext()) {
        const file = files.next();
        const filename = file.getName();
        if (/[a-zA-Z0-9]{3}\. [a-zA-Z0-9]{5}\. [a-zA-Z0-9]{5}\.pdf/.test(filename)) {
          file.setName(filename.replace(/ /g, ""));
        }
      }
    

笔记:

  • 在此正则表达式中,检查字母和数字。如果特定字符包含在 的模式中NNN. SSSSS. FFFFF.pdf,请告诉我。

参考:

添加

  • By NNN I should have said these are numerals ranging from 001 to 999.,我理解NNN为 3 位数字。
  • In the same sense that SSSSS represents a Surname having multitude of letters and ranging in length.,我明白那SSSSS是 5 个字符的字符串。

从上面看,修改后的示例脚本如下。

样本

function myFunction() {
  const folderId = "###"; // Please set the folder ID.

  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFilesByType(MimeType.PDF);
  while (files.hasNext()) {
    const file = files.next();
    const filename = file.getName();
    if (/[0-9]{3}\. [a-zA-Z]{5}\. [a-zA-Z0-9]{5}\.pdf/.test(filename)) {
      file.setName(filename.replace(/ /g, ""));
    }
  }
}

或者

function myFunction() {
  const files = DriveApp.searchFiles("title contains '. ' and mimeType='application/pdf'");
  while (files.hasNext()) {
    const file = files.next();
    const filename = file.getName();
    if (filename.includes(". ")) {
      file.setName(filename.replace(/ /g, ""));
    }
  }
}

推荐阅读