我有两个文件夹文件夹 A - 总共有 1786 个 dm4 文件文件夹 B - 总共有 2131 个 tbz(A 和 B 文件夹中可用的 dm4 的存档文件)文件以及不在文件夹 A 中的 124 个 dm4 文件。
目标是将所有 dm4 放在一个文件夹中,并确保文件夹 B 中没有丢失包含 tbz 文件的 dm4。但是,当我将所有丢失的 124 个 dm4 文件从文件夹 B 复制到 A 时,它会添加到 1910 个 DM4 文件。但是,我的文件夹 B 显示我有 2131 tbz。这意味着我需要知道文件夹 b 中剩余的 221 个 dm4 文件/tbz 文件的名称,因此我知道它们在我的 dm4 列表中丢失了。
在这种情况下找到我丢失的 dm4s/tbz 文件的最快方法是什么?
答案1
为了确保我理解,这是正确的吗?
您有 2131 个 .tbz 文件,每个文件都应该有一个相应的 .dm4 即 example-file-09.tbz example-file-09.dm4 但是您缺少许多相应的 dm4 文件,并且需要找到它们是哪些。
假设这是正确的,这应该可以工作(假设你的文件名中没有任何空格)
dm4_files="$(find A -name '*.dm4')"
for file in $(find B -name '*.tbz'); do
# || is a logical or operator; bash will only execute the right side if the left side fails (returns a non-zero exit code)
echo -e "$dm4_files" | grep -q "$(basename $file .tbz).dm4" || echo "Missing $(basename $file .tbz).dm4"
done
编辑:由于注释格式不佳而添加运行说明
从终端运行:
- 将上面的 A 和 B 更改为相关目录的完整路径(或者,cd 到包含这两个目录的目录)
- 粘贴命令
从脚本运行:
- 将命令放入带有 A 和 B 的目录中名为 check-dm4.sh 的文件中(.sh 后缀不执行任何操作,但对于 shell 脚本来说是常规的)
- 在文件顶部插入以下行(第一行)
#!/bin/bash
- 将文件标记为可执行文件(chmod +x check-dm4.sh,或右键单击 -> 属性/无论您的发行版如何称呼它) 4. 运行文件