我有一个目录,其中的文件扩展名为 .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