Rez*_*eza 6 delete directory batch
我有一个目录,其文件的扩展名为 .JPG 或 .NEF,我想删除目录中不存在 X.JPG 格式的 X.NEF 文件。(这里的 X 可以是任何字符串。)除了手动,我不知道如何做到这一点。
更一般的情况是,当您想在目录 A 中查找也存在于目录 B 中的所有文件时。(第一个问题可以使用 转化为第二个问题mmv
。)
您可以使用 shell 的${var%ext}
参数替换功能在每个文件的基础上删除原始扩展名:举例说明
touch file{1..6}.NEF file{1,2,4,6}.JPG
Run Code Online (Sandbox Code Playgroud)
然后
for nef in *.NEF; do [[ -f "${nef%.NEF}.JPG" ]] || echo rm -- "$nef"; done
Run Code Online (Sandbox Code Playgroud)
结果是
rm -- file3.NEF
rm -- file5.NEF
Run Code Online (Sandbox Code Playgroud)
解释:
第一个命令只创建 6 个.NEF
编号file1.NEF
为的文件和其中 3 个的file6.NEF
相应.JPG
文件,即只是一些空文件来测试第二个命令。