首页 > 解决方案 > 使用 Shell 脚本计算目录中不同的文件名

问题描述

我有一个文件夹,其中包含大约 400 个文件,我必须做些什么来计算不同文件的数量,因为可能有多个版本的文件。例如,如果在一个文件夹中我有 8 个文件:-

V07Y_0021_YP_0100_001.PDF - 这是独一无二的

V07Y_0021_YP_0099_001.PDF - 这是独一无二的

V07Y_0021_YP_0003_001.PDF - 这是重复的 _001.PDF 是第一个版本

V07Y_0021_YP_0003_002.PDF - 这是重复的 _002.PDF 是第二个版本

V07Y_0021_YP_0109_001.PDF - 这是重复的 _002.PDF 是第一个版本

V07Y_0021_YP_0108_001.PDF - 这是独一无二的

V07Y_0021_YP_0109_002.PDF - 这是重复的 _002.PDF 是第二个版本

在上述文件中 _0109,_0100,_0099 是页码,在这些数字之后 _001,_002 是版本。此外,同一文件(页码)也可以有两个以上的版本,所以我必须实现一个逻辑,这将使我算作5 因为 2 个文件是重复的,所以它只会被计算一次。

我尝试了各种方法,例如 find directoryName -type f -printf '%f\n' | sort -u 这个剂量对我有用,因为我也必须找到一个模式。

如果有人知道逻辑请分享。提前致谢。

标签: shell

解决方案


find . -type f -printf '%f\n' |
# Remove the version part
sed 's!_[0-9][0-9][0-9].PDF$!!' |
# remove duplicates
sort -u

会输出:

V07Y_0021_YP_0003
V07Y_0021_YP_0099
V07Y_0021_YP_0100
V07Y_0021_YP_0108
V07Y_0021_YP_0109

在 repl 上测试


推荐阅读