与通配符的文件名比较

先验的骆马

我正在处理一个脚本,我需要将一个文件名与另一个文件进行比较,并查找特定的更改(在这种情况下,当OS X需要将文件添加到目录中时,当文件名时,将“(x)”添加到文件名中已经存在),因此这是脚本的摘录,已修改为无需其余脚本即可进行测试。

#!/bin/bash

p2_s2="/Path/to file (name)/containing - many.special chars.docx.gdoc"
next_line="/Path/to file (name)/containing - many.special chars.docx (1).gdoc"
file_ext=$(echo "${p2_s2}" | rev | cut -d '.' -f 1 | rev)
file_name=$(basename "${p2_s2}" ".${file_ext}")
file_dir=$(dirname "${p2_s2}")

esc_file_name=$(printf '%q' "${file_name}")
esc_file_dir=$(printf '%q' "${file_dir}")
esc_next_line=$(printf '%q' "${next_line}")

if [[ ${esc_next_line} =~ ${esc_file_dir}/${esc_file_name}\ \(?\).${file_ext} ]]
 then
  echo "It's a duplicate!"
fi

我在这里尝试执行的操作是检测文件next_line是否与p2_s2重复。由于我期望有多个重复项,因此next_line可以在文件名末尾或方括号中的任何其他数字后附加(1)(尽管我确定没有两位数)。由于我无法将简单的字符串与中间的通配符进行比较,因此我尝试使用“ =〜”运算符并将所有特殊字符转义。知道我在做什么错吗?

兰尼·阿尔贝格(Rany Albeg)葡萄酒

您可以修剪ps2_s2的扩展名,修剪next_line的扩展名(包括括号内的数字),并查看是否获得相同的文件名。如果您这样做-这是重复的。为此,[[允许我们在字符串和Glob之间执行比较

我使用了extglob+( ... )模式,因此可以+([0-9])用来匹配括号内的数字。请注意,extglob已由启用shopt -s extglob

#!/bin/bash

p2_s2="/Path/to/ps2.docx.gdoc"
next_line="/Path/to/ps2(1).docx.gdoc"

shopt -s extglob
if [[ "${p2_s2%%.*}" = "${next_line%%\(+([0-9])\).*}" ]]; then
    printf '%s is a duplicate of %s\n' "$next_line" "$p2_s2"
fi

编辑:

现在,我看到您已经编辑了问题,因此,如果此解决方案不够用,我很肯定它将是一个很好的模板。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将文件名与提供的模式进行比较,或者比较两个具有通配符的字符串

来自分类Dev

处理文件名中带有通配符的文件

来自分类Dev

处理文件名中带有通配符的文件

来自分类Dev

比较处理指令并获取文件名

来自分类Dev

比较变量与文件名bash

来自分类Dev

Bash中的文件名比较

来自分类Dev

变量中带有通配符的文件名

来自分类Dev

使用通配符检查文件名搜索模式中的冲突

来自分类Dev

gnu发现怪异:文件名通配符损坏?

来自分类Dev

如何在Bash中获取文件名的通配符部分

来自分类Dev

Powershell-使用通配符搜索文件名

来自分类Dev

返回文件名,但通配符已解决

来自分类Dev

在通配符输入上写入新文件名的方法?

来自分类Dev

gnu发现怪异:文件名通配符损坏?

来自分类Dev

如何使用带有“长文件名”的通配符*?

来自分类Dev

使用零填充文件名中的索引并接受通配符

来自分类Dev

Perl通配符匹配“ ls”输出中的文件名

来自分类Dev

Ms Access 使用通配符或循环获取文件名

来自分类Dev

在 tcl 中复制文件名(带通配符)

来自分类Dev

通配符文件路径比较

来自分类Dev

比较文件名和字符串

来自分类Dev

使用shell比较数组中的文件名

来自分类Dev

昨天的日期将与.txt的文件名进行比较

来自分类Dev

PowerShell多条语句条件-比较文件名中的日期

来自分类Dev

重击,在文件名中搜索模式并进行比较

来自分类Dev

比较/检查PDF文件名和内容

来自分类Dev

Powershell:比较并匹配文件名的特定部分

来自分类Dev

比较driectory中的文件名与数据库

来自分类Dev

如何在BASH中将数字与文件名进行比较

Related 相关文章

热门标签

归档