如何检测名称相同但扩展名不同的文件?

如何检测名称相同但扩展名不同的文件?

我有一个目录,其中的文件扩展名为 .JPG 或 .NEF,我想删除目录中不存在 X.JPG 格式的 X.NEF 文件。(这里的 X 可以是任何字符串。)除了手动操作,我不知道该怎么做。

更常见的情况是,当你想找到目录 A 中所有存在于目录 B 中的文件时。(第一个问题可以使用 转化为第二个问题mmv。)

答案1

您可以使用 shell 的${var%ext}参数替换功能逐个文件删除原始扩展名:举例说明

touch file{1..6}.NEF file{1,2,4,6}.JPG

然后

for nef in *.NEF; do [[ -f "${nef%.NEF}.JPG" ]] || echo rm -- "$nef"; done

结果是

rm -- file3.NEF
rm -- file5.NEF

解释:

第一个命令仅创建 6 个.NEF文件,其中 3 个文件file1.NEF按编号列出file6.NEF并对应,即仅一些空文件来测试第二个命令。.JPG

相关内容